有没有办法对触发器的对象类型进行比较?
<DataTrigger Binding="{Binding SelectedItem}" Value="SelectedItem's Type">
</DataTrigger>
Run Code Online (Sandbox Code Playgroud)
背景:我有一个工具栏,我想要隐藏按钮,具体取决于当前为所选项目对象设置的子类.
谢谢
这可能是一个初学者的问题,但是有一种标准方法可以将Wheel属性的重复重构为抽象类,但仍然保持对Part类型的显式强制转换.我们假设我们必须阻止将FastCarWheel放在SlowCar上,并且有许多属性就像这样.
abstract class Car {}
class FastCar : Car
{
public FastCarWheel Wheel { get; set; }
}
class SlowCar : Car
{
public SlowCarWheel Wheel { get; set; }
}
abstract class WheelPart {}
class FastCarWheel: WheelPart {}
class SlowCarWheel: WheelPart {}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,只允许这种类型的复制是常见的吗?我正在考虑使用泛型,但似乎我正在解决这个问题,并且每个额外的属性都会变得更糟.
abstract class Car <P>
where P : Part
{
protected abstract P Wheel { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
谢谢
我有一段时间试图在DataGrid上动态绑定ContextMenu.DataGrid绑定到一个很好的对象列表:
<DataGrid ItemsSource="{Binding DataGridItems}">
Run Code Online (Sandbox Code Playgroud)
对于每个DataGridItem对象,我有一个在属性上公开的MenuItem列表,我想用它来绑定到ContextMenu.我尝试了以下但我认为我遗漏了一些东西:
<DataGrid ItemsSource="{Binding DataGridItems}">
<DataGrid.ContextMenu>
<ContextMenu ItemsSource="{Binding ContextMenuItems}" >
<MenuItem Header="{Binding Name}" Command="{Binding OnClick}"></MenuItem>
</ContextMenu>
</DataGrid.ContextMenu>
<DataGrid>
Run Code Online (Sandbox Code Playgroud)
public class DataGridItem
{
public ObservableCollection<ContextMenuItem> ContextMenuItems
{
get { return _contextMenuItems; }
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助或指导将不胜感激.
wpf ×2
binding ×1
c# ×1
contextmenu ×1
data-binding ×1
datagrid ×1
datatrigger ×1
inheritance ×1
types ×1
xaml ×1