WPF DataGrid将Radiobutton列绑定到属性

时间:2014-01-15 01:32:30

标签: wpf xaml data-binding datagrid

我一直在寻找,但我似乎无法找到为什么我的datagrid radiobutton列(正在生成)无法正常工作。我可以点击单选按钮,但它们不会改变。对于某些背景我正在制作房地产管理程序,此窗口是“编辑属性”页面。我正在创建一个数据网格,用户可以选择住在该属性中的租户以及当前(或最新)租户。

这是我的datagrid的xaml:

<DataGrid VerticalScrollBarVisibility="Auto" CanUserDeleteRows="False" CanUserReorderColumns="False" CanUserResizeRows="False" CanUserAddRows="False" AutoGenerateColumns="False" Margin="5,0,0,0" Width="375" Height="100" ItemsSource="{Binding CurrentProperty.tennants}">
    <DataGrid.Columns>
        <DataGridCheckBoxColumn Header="Lived Here" Binding="{Binding something}"/> <!-- I'm still working on this. This is a totally different problem. I know how to bind. -->
        <DataGridTemplateColumn Header="Current">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <RadioButton HorizontalAlignment="Center" GroupName="current" IsChecked="{Binding current, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>                        
        </DataGridTemplateColumn>
        <DataGridTextColumn Header="Name" Binding="{Binding name}"/>
    </DataGrid.Columns>
</DataGrid>

目前,有5个租户出现在数据网格中(这就是我想要的),其中一个已经选择了当前的单选按钮(这就是我想要的)。但是我不能选择不同的单选按钮。它只是取消选择当前的那个,直到我再次点击它。

感谢。我现在已经疯了一段时间了。

2 个答案:

答案 0 :(得分:0)

@Ethan,当您的.NET程序出现问题时,您的第一步应该是转到搜索引擎并输入A B,其中A是UI的名称element和B是它所属成员类型的名称。在您的情况下,您需要搜索DataGridCheckBoxColumn class。如果你这样做了,你就会发现你的问题是什么......这是你的DataGridCheckBoxColumn

<DataGridCheckBoxColumn Header="Lived Here"/>

以下是链接页面中示例中的内容:

<DataGridCheckBoxColumn Header="Online Order?" IsThreeState="True" Binding="{Binding 
    OnlineOrderFlag}" />

直接,我们可以看到你没有设置DataGridCheckBoxColumn.Binding属性。如果我们查看页面上的属性,我们可以看到Binding属性

  

获取或设置将列与数据源中的属性相关联的绑定。

因此,您没有将DataGridCheckBoxColumn与数据绑定项中的任何属性相关联,就像您对其他列所做的那样:

<DataGridTextColumn Header="Name" Binding="{Binding name}"/>

在列上设置适当的Binding后,应该看到它全部按预期工作。


从帮助中心的How do I ask a good question?页面可以清楚地看到,您应该在在此处发布问题之前彻底搜索,以防止发布易于解决的问题。请将来这样做。


更新&gt;&gt;&gt;

@Ethan,我误解了你的问题并接受你可能确实做了一些研究,为此,我道歉。但是,我想知道你是否可以勾勒出我的回答中描述你有多愚蠢的部分?作为site moderators之一,我有责任解释这个网站如何为新老会员服务。

这个有用的建议通常受到大多数用户的欢迎和感谢,所以我真的不明白为什么你采取了这样的负面看法...毕竟,我只是 一个首先要打扰尝试回答你的问题。

关于你的上一条评论,请不要为我编辑你的问题...为自己编辑...你的问题越多,它就会越受关注。

如果您现在已经平静下来,也许我可以解决您的实际问题?我已经将您的XAML复制到一个包含一些虚拟数据的新项目中,我不敢说该代码存在 no 问题。您的问题必须存在于其他地方,可能是在更改数据的属性设置器中,或类似的事情。

现在,我将尝试在这里给你一些建议,但这绝不意味着我认为你是愚蠢的...当你在这里添加一个问题并提供代码时,建议你确保您的代码示例实际演示您的问题。我经常发现,在简化问题时要在这里的问题中描述,我会在那个过程中找到解决方案。

答案 1 :(得分:0)

您可能希望为数据模板添加数据触发器 -

<DataTemplate.Triggers> 
  <DataTrigger Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGridCell}}}" Value="True">
     <Setter TargetName="current" Property="IsChecked" Value="True"/>
 </DataTrigger>
</DataTemplate.Triggers>

PS:这只是一个解决方法。