C# &引用;占位符;静态资源中的绑定
我有一个C# &引用;占位符;静态资源中的绑定,c#,wpf,C#,Wpf,我有一个列表视图,它从静态资源获取其样式。例如,我在我的MainWindowViewModel中有一个自定义对象的ObservableCollection。此对象包含一些属性,包括MyCustomObjectProperty。MainWindowViewModel还有一个ICommand,MyCommand 我的风格(为简单起见,裁剪了一些片段): 这个代码有效。单击列表视图中的按钮时,MyCommandOne将使用单击的列表视图项表示的自定义对象中的参数执行 我的问题是:有没有办法用某种占位符
列表视图
,它从静态资源获取其样式
。例如,我在我的MainWindowViewModel
中有一个自定义对象的ObservableCollection
。此对象包含一些属性,包括MyCustomObjectProperty
。MainWindowViewModel
还有一个ICommand
,MyCommand
我的风格(为简单起见,裁剪了一些片段):
这个代码有效。单击列表视图
中的按钮时,MyCommandOne
将使用单击的列表视图项表示的自定义对象中的参数执行
我的问题是:有没有办法用某种占位符替换
DataContext.MyCommandOne,RelativeSource…
,这样我就可以在实际的列表视图的标记中指定所需的命令?这样,我可以用这种样式创建更多的ListView
s,但执行不同的命令。解决方法-将ListView
的标记设置为实际命令,然后从按钮
绑定到ListView
的标记
属性
<DataTemplate>
<Button Command="{Binding Tag, RelativeSource={RelativeSource FindAncestor,
AncestorType=ListView}}"/>
........
</DataTemplate>
<ListView Grid.Column="1"
Grid.Row="1"
ItemsSource="{Binding Path=MyObservableCollection}"
Style="{StaticResource MyListViewStyle}"
Margin="5"
BorderThickness="0"
Background="LightGray"
/>
<DataTemplate>
<Button Command="{Binding Tag, RelativeSource={RelativeSource FindAncestor,
AncestorType=ListView}}"/>
........
</DataTemplate>
<ListView Tag="{Binding MyCommandOne}"/>