2014-01-15 111 views
0

我一直在寻找一段时间,但我似乎无法找到为什么我的datagrid radiobutton列(这是生成)不能正常工作。我可以点击单选按钮,但它们不会改变。对于一些背景我正在做一个房地产管理程序,这个窗口是“编辑属性”页面。我正在创建一个数据网格,用户可以选择已经住在该财产以及当前(或最新)租户的租户。WPF 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个租户,在DataGrid中显示出来(这是我想要什么)和其中一人有选择的当前单选按钮(这是我想要的)。我不能,但是选择不同的单选按钮。它只是取消选择当前的一个,直到我再次点击它。

谢谢。现在我已经为此疯狂了一段时间了。

回答

0

@Ethan,当你有你的.NET程序有问题,你的第一个步骤应该是去一个搜索引擎,键入A B,其中A是UI元素的名称和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?页面帮助中心清楚地看到,你应该在这里搜索彻底发布的问题,以防止容易解决的问题被发布。今后请这样做。


UPDATE >>>

@Ethan,我误解你的问题,并接受你可能确实做了一些研究,对于这一点,我很抱歉。然而,我想知道你能否在我的回答中概述那部分描述你是多么愚蠢的部分?作为site moderators之一,我有责任解释这个网站如何适用于新成员和初级成员。

这种有益的建议通常是欢迎和感谢大多数用户,所以我真的不明白你为什么采取这样的负面看法......毕竟,我是唯一一个已经不屑于尝试首先回答你的问题。

关于你最后的评论,请不要为我编辑你的问题...为自己编辑...你的问题越好,它将得到更多的关注。

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

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

+2

我做到了。我不想要一个复选框。我想要一个单选按钮。在发布一个描述我是多么愚蠢的答案之前,请先正确地阅读这个问题。请在将来这样做。谢谢。 –

+1

问题是关于模板单选按钮列。不是这样的:''。我知道这并不完整。尽管如此,我仍然会编辑这个问题。 –

+2

对不起,去年这些评论有多糟糕。我刚回到这个问题,因为它有1000多个意见。我的心情一定很糟糕。感谢您提供的帮助。 –

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:这只是一个变通。