我正在尝试将 a 的标题文本绑定GroupBox
到一个属性并使用StringFormat
.
第一部分工作,它按预期返回文本。但我希望对最终文本进行格式化。例如,当我返回时,cm
我希望它显示为Foundation Height (cm)
,但下面的代码仅显示cm
.
<GroupBox Header="{Binding CurrentTargetUnit,
Converter={StaticResource QuantityToTextConverter},
ConverterParameter={x:Static enumerations:Quantity.Length},
StringFormat='Foundation Height ({0})'}">
</GroupBox>
Run Code Online (Sandbox Code Playgroud) 将valueconverter与listbox一起使用的最简单方法是什么?
我在运行时将ItemSource设置为对象的List <>,它显示ToString()方法的文本字符串.但我想要的是通过值转换器传递对象以获得完全不同的字符串值.
我发现的所有示例都将大量绑定到xaml中的内容,定义样式和模板以重新设计整个框,但我只想将我的值转换为...
我不确定为什么我们需要使用I ConvertBack
方法IValueConverter
.
在Convert
方法本身中,我们进行转换并返回要在我们的控件中绑定的更新值.
那么在哪个场景中我们应该使用Convertback.我知道这个问题非常基础,但只是想让基本原理清楚.
非常感谢您的帮助和建议.
谢谢,Subhen
我在XAML中有一个TextBox,我试图将数据绑定到一个可以为空的int.这是我的文本框和链接转换器的代码:
<TextBox x:Name="textArea" InputScope="Number" Text="{Binding Area, Mode=TwoWay, Converter={StaticResource NullableValueConverter}}" />
public class NullableValueConverter:IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
if (String.IsNullOrEmpty(value.ToString()))
{
return null;
}
return value;
}
}
Run Code Online (Sandbox Code Playgroud)
当我在此文本框中输入数字时,数据绑定似乎不起作用,数据源始终保留为空.我怎么能绕过这个?
我正在使用XAML和C#来设计一个Windows应用商店.
提前致谢.
c# data-binding ivalueconverter winrt-xaml windows-store-apps
我通过代码后面调用一个IValueConverter类,但我不知道该在Type targetType
参数中添加什么.该对象string
只是使用它给我'无效的表达术语'字符串'
我调用转换器的代码
secondConverter.Convert(score, string, null, CultureInfo.CurrentCulture);
Run Code Online (Sandbox Code Playgroud)
转换器类
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
TimeSpan ts = new TimeSpan(0, 0, (int)value);
return String.Format("{0:D2}:{1:D2}:{2:D2}",
ts.Hours,
ts.Minutes,
ts.Seconds);
}
Run Code Online (Sandbox Code Playgroud) 我不是C#向导,但必须有一个简单的解决方案.
我有IValueConverter
一个DataTemplate
.转换器将用于控件,其数据绑定到类型为的对象enum
:public enum ContentTypes
.我想编写一个通用的转换器,它可以接受任何一个enum
,然后用它做一些事情,但是当下面的转换器确实是对象参数的类型ContentTypes
而不是Enum
.
该Convert
方法:
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Type valueType = value.GetType(); // <-- evaluates to `ContentTypes`. How can I just see if it's an enum, or Enum?
if (value.GetType() == typeof(Enum))
{
// Do something ....
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
那么,是否有可能采用一个未知类型的对象并确定它是否是一个enum
并将其转换为这样的枚举,一般来说呢?我遗漏了一些基本的东西.
在XAML绑定标记中可以否定布尔属性。不知道这是正确的描述。例如,我使用一个内置的转换器来基于其是否处于活动状态来设置窗口边框控件的可见性。
<Border BorderBrush="{StaticResource BorderColorBrush}"
BorderThickness="1"
Visibility="{Binding IsActive,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type Window}},
Converter={StaticResource bool2VisibilityConverter}}" />
Run Code Online (Sandbox Code Playgroud)
与我相反的是,如果Window处于活动状态,我希望将Visibility设置为false。这只是一个例子,但是我遇到了其他情况,在这种情况下可以应用“!” 转换为股票转换器正在评估的布尔属性,因此我不必编写自定义变量。
我需要将WPF UserControl上的控件的可见性绑定到Alt键的状态,如果可能的话通过转换器.只有在按下ALT键时才能看到Button,解决方案不应该集成在Code Behind文件中,因为我使用的是PRISM/Unity的严格MVVM模式.
一个完美的解决方案包括编写一个能够将键盘键状态转换为用户控件的Visiblity属性的新转换器,但我对转换器的经验很少,而且我自己无法提供解决方案.
我需要无限符号 TextBlock
如果我写"∞"
的TextBlock.Text
都是好的,用TextBlock
"∞"符号.
<TextBlock Text="∞"/>
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用Converter
.
<TextBlock Text="{Binding MyValue, Converter={StaticResource MyConverter}}"/>
Run Code Online (Sandbox Code Playgroud)
我有"∞"
文字TextBlock
.
public class MyConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return "∞";
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud)
有什么解决方案吗?
第一次加载窗口时,我希望折叠文本框,同时保持对Viewmodel中属性(SomeProp)的绑定。
不幸的是,我无法做到这一点。
我尝试过的
尝试1:我尝试在viewmodel的构造函数中将值显式设置为null,并显式调用Onpropertychanged。转换器未触发。
尝试2:在后面的代码中,我将默认可见性设置为visible.Collapsed。这似乎有一个副作用,即“可见性”不再绑定到SomeProp属性。
尝试3:在谷歌搜索后,我发现了一些关于PriorityBinding的信息,但这似乎仅适用于文本框的TEXT属性。 当由于空值而无法评估绑定时,请使用默认值
先感谢您,
额外信息:
我有一个文本框,并且仅当ViewModel中的属性(SomeProp)的值为“其他”时,该文本框才可见。我已经为此成功使用了转换器。这意味着每当我更改SomeProp的值时,文本框就将根据SomeProp的值变为可见/不可见。我使用了以下代码: WPF:按字符串内容的绑定可见性
有谁知道我如何在保持绑定到属性SomeProp的同时将“文本框可见性”设置为“已折叠”。
XAML
<TextBox Name="txtbox" Visibility="{Binding SomeProp.Description, Converter={StaticResource StringOtherToVisibilityConverter}}" TextWrapping="Wrap" Height="150" MaxLength="2000"
Text="{Binding SomeProp2.Text, Mode=TwoWay}"
ScrollViewer.VerticalScrollBarVisibility="Auto" AcceptsReturn="True">
</TextBox>
Run Code Online (Sandbox Code Playgroud)
转换器
class StringOtherToVisibilityConverter : System.Windows.Markup.MarkupExtension, IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null)
{
if (value.ToString() == "Other")
{
return Visibility.Visible;
}
else
{
return Visibility.Collapsed;
}
}
else
{
return Visibility.Collapsed;
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo …
Run Code Online (Sandbox Code Playgroud) ivalueconverter ×10
c# ×6
wpf ×5
data-binding ×2
mvvm ×2
silverlight ×2
xaml ×2
.net ×1
bind ×1
enums ×1
listbox ×1
types ×1
unicode ×1
winrt-xaml ×1