WPF数据触发器可见性+空值

4

我是WPF的初学者。 当数据绑定的值等于Null时,我想将Radiobutton的Visibility设置为Hidden。 我正在使用WPF Toolkit。 这是我的代码,但它不起作用:

    <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>

你能帮我吗? 谢谢


发生了什么?P_DAY_PRICE是什么?P_DAY_PRICE是DG数据上下文的成员吗?您没有提供足够的信息来帮助您。 - CodingGorilla
P_DAY_PRICE是我的数据表中的一个字段。我使用存储过程的结果填充了dtGrdData.ItemsSource。 - Cyril
2
数据触发器将使用当前的 DataContext,而不是 ItemsSource 中的数据。您可能需要正确配置网格的 DataContext - CodingGorilla
2个回答

13

将您的 DataTrigger 移动到您的 RadioButton 附近:

<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>

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接