2011-03-29 74 views
4

我是WPF的初学者。 我想在数据绑定值等于Null时将可见性设置为隐藏在Radibutton上。 我正在使用WPF工具包。 这是我的代码,但它不工作:WPF Datatrigger可见性+空值

<dg:DataGrid x:Name="dtGrdData" HorizontalScrollBarVisibility="Hidden" SelectionMode="Extended" CanUserAddRows="False" CanUserDeleteRows="False" CanUserResizeRows="False" CanUserSortColumns="False" AutoGenerateColumns="False" 
       RowHeaderWidth="0" RowHeight="50" > 
     <DataTrigger Binding="{Binding P_DAY_PRICE}" Value="{x:Null}"> 
      <Setter Property="RadioButton.Visibility" Value="Hidden"></Setter> 
     </DataTrigger> 
     <dg:DataGrid.Columns> 
      <dg:DataGridTemplateColumn Header="1 day" Width="1.5*" > 
       <dg:DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <RadioButton x:Name="rdBtnDayPrice" GroupName="grpNmPrice" Content="{Binding Path=P_DAY_PRICE}" Style="{StaticResource toggleStyle}" Checked="RadioButton_Checked"></RadioButton> 
        </DataTemplate> 
       </dg:DataGridTemplateColumn.CellTemplate> 
      </dg:DataGridTemplateColumn> 
     </dg:DataGrid.Columns> 
    </dg:DataGrid> 

你能帮助我吗? 谢谢

+0

会发生什么?什么是P_DAY_PRICE? P_DAY_PRICE是DG数据上下文的成员吗?你不给我们足够的信息来帮助你。 – CodingGorilla 2011-03-29 15:00:13

+0

P_DAY_PRICE是我的数据表中的一个字段。我用storedProcedure的结果填充了dtGrdData.ItemsSource – Cyril 2011-03-29 15:04:41

+2

数据触发器将使用当前的'DataContext'而不是'ItemsSource'中的数据。您可能需要正确配置网格的DataContext。 – CodingGorilla 2011-03-29 15:07:00

回答

10

将您DataTrigger接近你的RadionButton

<RadioButton ...> 
    <RadioButton.Style> 
     <Style TargetType="RadioButton"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding P_DAY_PRICE}" Value="{x:Null}"> 
        <Setter Property="Visibility" Value="Hidden"></Setter> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </RadioButton.Style> 
</RadioButton> 
+0

这是工作,谢谢:) – Cyril 2011-03-29 15:56:41

3

我建议你直接在RadioButton上设置绑定,并使用Binding对象的'TargetNullValue'属性。

<RadioButton x:Name="rdBtnDayPrice" Visibility={Binding Path=P_DAY_PRICE, TargetNullValue=Hidden, Converter=...} GroupName="grpNmPrice" Content="{Binding Path=P_DAY_PRICE}" Style="{StaticResource toggleStyle}" Checked="RadioButton_Checked" 

您将需要一个转换器,以“P_DAY_PRICE”值转换为能见度枚举值和应该做的工作。

Riana