- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
大家好,我正在尝试更改 dataGrid 中列的模板,但我找不到在 XAML 中执行此操作的方法。我正在尝试通过这种方式来做
<DataTemplate>
<DataTemplate.Triggers>
<Trigger Property="{Binding ElementName=isComboBox, Path=IsChecked}"
Value="True">
<Setter Property="VisualTree">
<Setter.Value>
<ComboBox ItemsSource="{Binding elementos}"/>
</Setter.Value>
</Setter>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
但是一个错误告诉我 属性 VisualTree 不能设置为模板上的属性元素。只允许触发器和 Storyboard 作为属性元素
有没有人知道根据另一个控件更改 DataGridCell 中的模板的不同方法?
最佳答案
您不要在模板中更改模板,这不是它的工作方式。
有很多方法可以做到这一点。取决于您的应用程序是如何配置的。最常见的方法是
例如,您的应用程序中有几个模型
public sealed class Foo
{
public string Text {get;set;}
}
public sealed class Bar
{
public bool Checked {get;set;}
}
您的应用程序公开了一个包含一个或多个这些实例的属性
public partial class MainWindow : Window
{
//INotifyPropertyChanged/DependencyObject stuff left out!
public object FooOrBar {get;set;}
//snip
}
在您的 XAML 中,您有一个扩展 ItemsControl 的 UIElement 类型或 ContentControl或可以绑定(bind)到该属性的类似内容。
<Window
x:Name="root"
xmlns:t="clr-namespace:MyApplicationWhereFooAndBarLive"
SkipAllThatXmlnsDefinitionNonsenseForSpaceSavingsInThisExample="true"/>
<!-- see Resources below -->
<ConentControl Content="{Binding FooOrBar, ElementName=root}" />
</Window>
最后,您在应用程序的资源中为每个类型定义数据模板
<Window.Resources>
<DataTemplate DataType="{x:Type t:Foo}">
<TextBox Text="{Binding Text}" />
</DataTemplate >
<DataTemplate DataType="{x:Type t:Bar}">
<CheckBox Checked="{Binding Checked}" />
</DataTemplate >
</Window.Resources>
DataTemplate选择的过程是这样的:
FooOrBar = new Foo();
LoadContent()
加载可视化树方法。Foo
的新实例)ItemsControl 大致相同,只是添加了一个中介(即,ListBox 使用 ListBoxItem 作为中介,而 LBI 是一个 ContentControl)。
关于c# - 在 DataTemplate.Triggers 中设置 DataTemplate.VisualTree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11511285/
我遇到了一个我不明白的问题。我的 Visual Studio 出现以下 2 个错误: The property "VisualTree" can only be set once. The prope
我在此 xaml 文件中不断收到错误消息: The property 'VisualTree' is set more than once.
我正在尝试将两个网格放入 DataTemplate 中。 我的代码出现以下错误,如下所示。 Error: "The property 'VisualTree' is set more than onc
大家好,我正在尝试更改 dataGrid 中列的模板,但我找不到在 XAML 中执行此操作的方法。我正在尝试通过这种方式来做
我在 .NET 3.0 中使用 WPF。 我有一个相对简单的 DataTemplate 定义为 GridView 的 CellTemplate。我希望 DataTemplate 的 VisualTre
我需要知道 VisualTree 或 LogicalTree 中的父项何时更改控件。我需要此功能,因为任何时候父更改我都需要重新评估控件的窗口类,以便我可以附加 Command- 和 InputBin
这是我的应用程序的布局草图: ... ... ... ... ... ..
我在文本 block 的文本属性上设置了一个验证器。为了进行正确的验证,我需要文本 block 的父用户控件,但我在验证器中唯一拥有的是值对象(字符串)和文化(也无济于事)。 有谁知道在我无法访问我的
我是一名优秀的程序员,十分优秀!