gpt4 book ai didi

silverlight - 在 Silverlight 4 中使用值转换器绑定(bind)到 FontWeight

转载 作者:行者123 更新时间:2023-12-04 02:35:26 25 4
gpt4 key购买 nike

我想比较各种属性的两个版本,如果其中一个不等于另一个,则将其加粗。由于 SL4 不支持 MultiBinding,我将 FontWeight 绑定(bind)到“。”以便将整个数据上下文传递给转换器。然后,我使用转换器参数指定要在转换器中比较哪些字段。到目前为止,一切都很好......不匹配的值以粗体显示。

问题是粗体属性绑定(bind)到可以编辑的文本框。编辑值时,我希望“重新激活”转换器,以便根据 设置字体粗细。新 值(value)。这不会发生。如何实现?

注意:我已经为相关的类和属性实现了 INotifyPropertyChanged。更改值后跳到下一个字段会触发 PropertyChanged 事件,但字体粗细不会更新,直到我实际移动到不同的记录,然后返回到更改的记录。

(我还尝试使用 Mode=TwoWay 来查看是否可以解决问题。但是,当您绑定(bind)到“。”时,不能使用 TwoWay 绑定(bind))

最佳答案

你需要使用值(value)转换器吗?我使用 MVVM 模式快速尝试了这个,效果很好。如果你可以使用 MVVM,你可以这样做:

主页.xaml

<UserControl x:Class="BindBoldText.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:BindBoldText"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">

<UserControl.DataContext>
<local:MainPage_ViewModel/>
</UserControl.DataContext>

<StackPanel>
<TextBlock Text="{Binding Value1, Mode=TwoWay}"/>
<TextBlock Text="{Binding Value2, Mode=TwoWay}" FontWeight="{Binding Value2FontWeight}"/>
<TextBox Text="{Binding Value2, Mode=TwoWay}" TextChanged="TextBox_TextChanged"/>
</StackPanel>

MainPage.xaml.cs
    public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();

this.viewModel = this.DataContext as MainPage_ViewModel;
}

private MainPage_ViewModel viewModel;

private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
viewModel.Value2 = (sender as TextBox).Text;
}
}

MainPage_ViewModel.cs
public class MainPage_ViewModel : INotifyPropertyChanged
{
public string Value1
{
get { return value1; }
set
{
if (value1 != value)
{
value1 = value;
OnPropertyChanged("Value1");
}
}
}
private string value1 = "Test";

public string Value2
{
get { return value2; }
set
{
if (value2 != value)
{
value2 = value;
OnPropertyChanged("Value2");
OnPropertyChanged("Value2FontWeight");
}
}
}
private string value2 = "Test";

public FontWeight Value2FontWeight
{
get
{
if (value2.Equals(value1))
{
return FontWeights.Normal;
}
else
{
return FontWeights.Bold;
}
}
}

#region INotifyPropertyChanged Members

public event PropertyChangedEventHandler PropertyChanged;

public void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}

#endregion
}

关于silverlight - 在 Silverlight 4 中使用值转换器绑定(bind)到 FontWeight,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3112835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com