繁体   English   中英

重新探究C#'if'绑定值

[英]C# 'if' Binding value revisited

如果Closed属性的值为true ,我想操纵窗体上的控件。

还有一个类似的问题描述了DataTemplate触发器。 我相信这是我所需要的,但我无法使其正常运行。

我的DataGrid定义如下:

<DataGrid SelectedItem="{Binding SelectedAccount, Mode=TwoWay}" ItemsSource="{Binding Accounts, Mode=TwoWay}">
    <DataGrid.Columns>
        <DataGridTemplateColumn Header="Account Name">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBox x:Name="AccountName" Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}" />
                    <DataTemplate.Triggers>
                        <DataTrigger Binding="{RelativeSource FindAncestor, AncestorType={x:Type IAccount}}"  Value="True">
                            ... property adjustments ...
                        </DataTrigger>
                    </DataTemplate.Triggers>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        ...

它不编译并引发错误

无法将类型为“ System.Windows.Data.RelativeSource”的对象转换为类型为“ System.Windows.Data.BindingBase”的对象

我还尝试按照另一个问题中的说明应用绑定。

<DataTemplate DataType="models:IAccount"> OR <DataTemplate DataType="models:Account">
    ...
    <DataTemplate.Triggers>
        <DataTrigger Binding="{Closed}" Value="True">
            ... property adjustments ...
        </DataTrigger>
    </DataTemplate.Triggers>

但这引发了其他错误消息

错误1标记“已关闭”在XML名称空间“ http://schemas.microsoft.com/winfx/2006/xaml/presentation”中不存在。

错误2找不到类型'已关闭'。 验证您没有丢失程序集引用,并且所有引用的程序集均已构建。

Windows Presentation Foundation(WPF)项目不支持错误3关闭。

我对WPF和绑定非常陌生。 你能帮忙吗?

事实证明该解决方案非常简单。 绑定需要定义如下。

<DataTemplate DataType="models:IAccount"> OR <DataTemplate DataType="models:Account">
    ...
    <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding Closed}" Value="True">
            ... property adjustments ...
        </DataTrigger>
    </DataTemplate.Triggers>

请记住,也要在xaml中为您的类型添加名称空间。

谢谢大家纠正我的第一个问题和您的帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM