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指南/演练。没什么大不了的