我有一个listview,其中有一个gridview。我将其列定义如下,例如,对于员工类型列:
<GridViewColumn Header="Employee Type" Width="80" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock TextAlignment="Left" Text="{Binding EmployeeType}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
正如您所看到的那样,它与#34; EmployeeType&#34;视图模型中的属性。
private string _employeeType;
public string EmployeeType
{
get
{
return this._employeeType;
}
set
{
if (this._employeeType == value)
return;
this._employeeType = value;
OnPropertyChanged("EmployeeType");
}
}
EmployeeType可以具有以下可能性(它们是字符串ID):
所以我想做的是:
另外,我不知道是否有可能在“&#34;经理&#34;,&#34;工程师&#34;,&#34;技术&#34;”栏目中显示,但在内部(未显示)分别链接到1000A,1000B,1000C,所以当我需要从列表视图中读取所选项目时,我需要读取1000A,1000B,1000C而不是显示的字符串,类似winforms中的组合框,显示成员但是这个成员与一个未显示的值相关联,你可以阅读。
我该怎么做?
也许使用如下转换器:
namespace Test.Converter
{
public class MyConverter : IValueConverter
{
public object Convert(
object value, Type targetType, object parameter, CultureInfo culture)
{
// Do the conversion from string to visibility
if (value == "1000A")
return "Manager";
else if (value == "1000B")
return "Engineer";
else if (value == "1000C")
return "Technical";
else
throw new Exception(string.Format("Cannot convert, unknown value {0}", value));
}
public object ConvertBack(
object value, Type targetType, object parameter, CultureInfo culture)
{
// Do the conversion from visibility to string
string s = (string) value;
if (s.Equals("Manager", StringComparison.InvariantCultureIgnoreCase))
return "1000A";
else if (s.Equals("Engineer", StringComparison.InvariantCultureIgnoreCase))
return "1000B";
else if (s.Equals("Technical", StringComparison.InvariantCultureIgnoreCase))
return "1000C";
else
throw new Exception(string.Format("Cannot convert, unknown value {0}", value));
}
}
}
此外,放置此转换器的位置?在视图模型中?
查看:
xmlns:l="clr-namespace:Test.Converter"
<Window.Resources>
<l:MyConverter x:Key="converter" />
</Window.Resources>
<GridViewColumn Header="Employee Type" Width="80" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock TextAlignment="Left" Text="{Binding EmployeeType, Converter={StaticResource converter}}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
因此在将列显示到列表视图时使用此转换器&#34;转换&#34;方法被调用,当从列表视图中读取所选项时,如果我需要读回此列的值,我如何使用ConvertBack方法读取?
另外,另一种可能性是在xaml视图中使用可能的触发器,并且当从listview中读取所选项时实现某些方法来执行相反的转换以恢复原始值。
你的建议是什么?请注意,此列是只读的(显示但不可修改),无法修改。