我一直在寻找,但我似乎无法找到为什么我的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个租户出现在数据网格中(这就是我想要的),其中一个已经选择了当前的单选按钮(这就是我想要的)。但是我不能选择不同的单选按钮。它只是取消选择当前的那个,直到我再次点击它。
感谢。我现在已经疯了一段时间了。
答案 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:这只是一个解决方法。