Mix*_*oid 2 c# data-binding wpf escaping converter
我有以下问题.
我想将字符串分隔为某个符号.这可以是逗号,空格,制表符或其他内容.我将分隔符符号存储在我的依赖项属性中Delimiter.
在我的WPF代码中,我有以下单选按钮,如果Delimiter属于该单选按钮,应该检查它.这是WPF代码:
<RadioButton IsChecked="{Binding ElementName=view, Path=Delimiter, Converter={StaticResource MyConverterToCheckForEquality}, ConverterParameter=\t}" Tag="\t" />
Run Code Online (Sandbox Code Playgroud)
如果我检查转换器中的参数,则值为't'.
我想'\ t'所以我尝试了以下选项:
(注意:我添加了额外的空格和反斜杠以正确显示它).
结果非常令人难过...... Triple和Double反斜杠给了我双反斜杠,Single给我没有.\ 也给了我零反斜杠.
也许最令人沮丧的是,当我使用Tag属性设置分隔符时,\ t工作正常并且在此过程中不会额外转义...
有人可以解释为什么会发生这种情况,为什么这些选项都不起作用以及如何修复它?
更新
当我在multidatatrigger中使用多绑定时,结果是不同的:
<Binding ElementName="view" Path="Delimiter" Converter="{StaticResource MyConverterToCheckForEquality}" ConverterParameter="\\\t" />
Run Code Online (Sandbox Code Playgroud)
我的转换器中的参数值现在为'\\\\\\ t',但我仍然无法使其工作.
我可以替换值,但这意味着我必须在我的代码后面使用不同的变量,这将是非常难看的.我想没有其他解决方案.
试试这个:
ConverterParameter='	'
Run Code Online (Sandbox Code Playgroud)
	表示\t(#9是水平制表符的ASCII等价物)
我通过将它作为转换器参数传递给我的转换器来测试它,并且它正确显示.这是我的测试代码:
XAML:
<Window.Resources>
<local:MyConverter x:Key="MyConverter" />
</Window.Resources>
<Grid Tag="NotUsed_Ignore">
<TextBox Text="{Binding Converter={StaticResource MyConverter}, ConverterParameter='	', RelativeSource={RelativeSource Mode=Self}}, Path=Parent.Tag" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
C#codebehind:
public sealed class MyConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
if (parameter.Equals("\t")) return "Success!";
return "Failure!";
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,窗口显示一个TextBox,文本为"Success!"
| 归档时间: |
|
| 查看次数: |
1552 次 |
| 最近记录: |