我需要将View的类名称作为CommandParameter传递。怎么做?
<UserControl x:Name="window"
x:Class="Test.Views.MyView"
...>
<Grid x:Name="LayoutRoot" Margin="2">
<Grid.Resources>
<DataTemplate x:Key="tabItemTemplate">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" >
<Button Command="{Binding DataContext.CloseCommand, ElementName=window}"
CommandParameter="{Binding x:Class, ElementName=window}">
</Button>
</StackPanel>
</DataTemplate>
</Grid.Resources>
</Grid>
</UserControl>
结果应该是一个字符串'Test.Views.MyView'。
答案 0 :(得分:1)
x:Class只是一个指令而不是属性,所以你将无法绑定它。
配置XAML标记编译以加入其间的部分类 标记和代码隐藏。代码部分类在a中定义 使用公共语言规范(CLS)语言分离代码文件, 而标记部分类通常由代码创建 在XAML编译期间生成。
但是你可以从Type的FullName属性中获得相同的结果。使用转换器
CommandParameter="{Binding ElementName=window,
Path=.,
Converter={StaticResource GetTypeFullNameConverter}}"
GetTypeFullNameConverter
public class GetTypeFullNameConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
{
return null;
}
return value.GetType().FullName;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}