C# 六进制wpf绑定和字符串格式
我将以下列表绑定到字节列表:C# 六进制wpf绑定和字符串格式,c#,wpf,C#,Wpf,我将以下列表绑定到字节列表: <ListView ItemsSource="{Binding Payload}" VerticalAlignment="Center" BorderBrush="Transparent"> <ListView.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding StringFormat=0x{0:x2}}" Margi
<ListView ItemsSource="{Binding Payload}" VerticalAlignment="Center" BorderBrush="Transparent">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding StringFormat=0x{0:x2}}" Margin="2,1,2,1" MinWidth="25" MinHeight="20" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"></WrapPanel>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
该有效载荷是一个可观测的集合。我得到值并以六边形显示,但我希望这是一个双向模式。起初我得到0x00这样的值,但我想修改该值,比如说在0xff中,并将其放回到负载集合中,比如255。
我想我需要一个转换器,但在这方面我需要一些帮助 正如评论者所提到的,您可以使用
IValueConverter
来实现这一点。试试这个:
public class ByteToHexadecimalConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null || targetType != typeof(string)) return DependencyProperty.UnsetValue;
byte byteValue = 0;
if (!byte.TryParse(value.ToString(), out byteValue)) return DependencyProperty.UnsetValue;
return byteValue.ToString("x2");
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null || targetType != typeof(byte)) return DependencyProperty.UnsetValue;
string stringValue = value.ToString();
byte returnValue = 0;
try { returnValue = System.Convert.ToByte(stringValue, 16); }
catch { return DependencyProperty.UnsetValue; }
return returnValue;
}
}
您可能需要对其进行一些调整,以满足您的确切需求,但这很容易理解。您可以从MSDN的页面上找到有关
IValueConverter
的更多信息。仅供参考,您可以高亮显示整个代码块,然后按CTRL+K将其一次向后移动4个空格。感谢Michael提供的信息。您需要使用IValueConverter
和ConvertBack
方法,将其转换回字节。你可以在谷歌上找到许多ValueConverter指南/演练。没什么大不了的