相关疑难解决方法(0)

如何将枚举绑定到WPF中的组合框控件?

我试图找到一个简单的例子,其中枚举按原样显示.我见过的所有示例都尝试添加漂亮的显示字符串,但我不希望这种复杂性.

基本上我有一个类,它包含我绑定的所有属性,首先将DataContext设置为此类,然后在xaml文件中指定这样的绑定:

<ComboBox ItemsSource="{Binding Path=EffectStyle}"/>
Run Code Online (Sandbox Code Playgroud)

但是这并没有在ComboBoxas项中显示枚举值.

.net c# data-binding wpf xaml

169
推荐指数
8
解决办法
18万
查看次数

使用DataBinding值的MarkupExtension

我正在尝试创建一个WPF MarkupExtension类,它从我的文本翻译类提供翻译文本.翻译的东西效果很好,但需要使用文本键进行静态方法调用以返回翻译的文本.像这样:

ImportLabel.Text = Translator.Translate("import files");
// will be "Dateien importieren" in de or "Import files" in en
Run Code Online (Sandbox Code Playgroud)

它的特点是它接受计数值以提供更好的措辞.

ImportLabel.Text = Translator.Translate("import n files", FileCount);
// will be "Import 7 files" or "Import 1 file"
Run Code Online (Sandbox Code Playgroud)

另一个例子:如果事情还需要4分钟,那么它只需要一分钟即可.如果文本键"minutes"被定义为任何数字的"Minuten"而计数为1的"Minute",则以下方法调用将返回要使用的右词:

Translator.Translate("minutes", numberOfMinutes)
// will be "minute" if it's 1, and "minutes" for anything else
Run Code Online (Sandbox Code Playgroud)

现在在WPF应用程序中,有很多XAML代码,其中包含大量文字文本.为了能够翻译它们而不必坚持,我需要一个标记扩展,我可以传递我的文本键,并将在运行时返回翻译的文本.这部分相当容易.创建一个继承自MarkupExtension的类,添加一个接受文本键作为参数的构造函数,将其存储在私有字段中,并让其ProvideValue方法返回存储键的翻译文本.

我真正的问题是:如何使我的标记扩展接受计数值,使其受数据限制,并且当计数值发生变化时,翻译文本将相应地更新?

它应该像这样使用:

<TextBlock Text="{t:Translate 'import files', {Binding FileCount}}"/>
Run Code Online (Sandbox Code Playgroud)

每当FileCount的绑定值发生更改时,TextBlock都必须接收新的文本值以反映更改,并仍然提供良好的措辞.

我在那里找到了一个类似的解决方案:http://blogs.microsoft.co.il/blogs/tomershamam/archive/2007/10/30/wpf-localization-on-the-fly-language-selection. aspx但是,尽管我努力遵循它,但我无法理解它的作用或为什么它会起作用.似乎所有事情都发生在WPF中,提供的代码只会将其推向正确的方向,但目前还不清楚如何.我不能让我适应它做任何有用的事情.

我不确定在运行时让翻译语言发生变化是否有用.我想我需要另一级别的绑定.为了保持低复杂性,我不打算在基本版本工作之前这样做.

目前没有代码可以告诉你.它只是处于一种可怕的状态,它唯一能做的就是抛出异常,或者不翻译任何东西.任何简单的例子都非常受欢迎(如果在这种情况下存在这样的事情).

data-binding wpf markup-extensions

9
推荐指数
1
解决办法
5477
查看次数

如何从“Binding”对象获取“BindingExpression”?

简而言之(?),我有一个ListView(目标)单向绑定到一个XmlDataProvider(源)双向绑定到一个TextBox(目标)使用标准 XAML 进行控件绑定和自定义 XAML 扩展用于绑定到XmlDataProvider. 这对应用程序来说很方便,因为在应用XmlDataProvider程序运行后从用户输入动态加载...

无论如何,在运行时,修改TextBox.Text属性后,IMultiValueConverter.ConvertBack(...)调用该方法将更新从该目标传播回源。但是,因为XmlDataProvider对象不是 a DependencyProperty,所以更新不会从更改的XmlDataProvider源进一步传播到ListView目标的另一个绑定。

如果没有重新架构(您可以合理地建议),我需要通知 WPFXmlDataProvider需要更新任何将此作为源的目标。我希望维护一个通用的、可重用的绑定类,并且到目前为止,我已经享受了我的主要 XAML 解决方案的低编码负担。

目前,我拥有的唯一访问背后的代码来自IMultiValueConverter.ConvertBack(...)方法内部。在此方法中,我确实可以访问<-->链接的Binding对象。如果我能得到的对象然后我可以打这个电话来完成更新传播,...XmlDataProviderTextBoxBindingExpressionBinding.SourceBindingExpression.UpdateTarget()

但是,我不知道如何BindingExpressionBinding.Source与 a 无关的对象中获取a DependencyProperty

在此先感谢您的建议和帮助。

c# data-binding wpf xaml binding

3
推荐指数
1
解决办法
1894
查看次数

标签 统计

data-binding ×3

wpf ×3

c# ×2

xaml ×2

.net ×1

binding ×1

markup-extensions ×1