wpf属性更新后通知的问题
问题:两个checkbox更新后,绑定的属性并没有更新,请教各位大神带这么解决?只有200分,如果哪位能解决,全部奉上
代码如下:
view(XAML文件):
<UserControl.Resources>
<ResourceDictionary>
<local:ShowConverter x:Key="sc"/>
</ResourceDictionary>
</UserControl.Resources>
<CheckBox Content="{Binding BSM.Commander_BTNMain.Name}" IsChecked="{Binding BSM.Commander_BTNMain.IsSelected}" >
<CheckBox Content="{Binding BSM.Commander_BTNSub.Name}" Grid.Column="1" IsChecked="{Binding BSM.Commander_BTNSub.IsSelected}" />
<Label>
<Label.Content>
<Label Grid.Column="1">
<Label.Content>
<MultiBinding Converter="{StaticResource sc}">
<Binding Path="BSM.Commander_BTNMain" Mode="OneWay"/>
<Binding Path="BSM.Commander_BTNSub"/>
</MultiBinding>
</Label.Content>
</Label>
Model:
public class ICheckItem : BindableBase
{
/// <summary>
///当前项是否选中
///</summary>
private bool isSelected;
public bool IsSelected
{
get { return isSelected; }
set
{
SetProperty(ref isSelected, value);
}
} /// <summary>
///名称
///</summary>
public string Name { get; set; }
}
public class BTNSysDeployModel : BindableBase
{ //主车
private ICheckItem commander_BTNMain = new ICheckItem();
public ICheckItem Commander_BTNMain
{
get { return commander_BTNMain; }
set
{
SetProperty(ref commander_BTNMain, value);
}
}
//副车
private ICheckItem commander_BTNSub = new ICheckItem();
public ICheckItem Commander_BTNSub
{
get { return commander_BTNSub; }
set
{
SetProperty(ref commander_BTNSub, value);
}
}
}
转换器:
public class ShowConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
string show = "";
foreach (var item in values)
{
if (item is ICheckItem)
{
ICheckItem ic = (ICheckItem)item;
if (ic.IsSelected)
{
show += ic.Name + " ";
}
}
}
return show;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
代码如下:
view(XAML文件):
<UserControl.Resources>
<ResourceDictionary>
<local:ShowConverter x:Key="sc"/>
</ResourceDictionary>
</UserControl.Resources>
<CheckBox Content="{Binding BSM.Commander_BTNMain.Name}" IsChecked="{Binding BSM.Commander_BTNMain.IsSelected}" >
<CheckBox Content="{Binding BSM.Commander_BTNSub.Name}" Grid.Column="1" IsChecked="{Binding BSM.Commander_BTNSub.IsSelected}" />
<Label>
<Label.Content>
<Label Grid.Column="1">
<Label.Content>
<MultiBinding Converter="{StaticResource sc}">
<Binding Path="BSM.Commander_BTNMain" Mode="OneWay"/>
<Binding Path="BSM.Commander_BTNSub"/>
</MultiBinding>
</Label.Content>
</Label>
Model:
public class ICheckItem : BindableBase
{
/// <summary>
///当前项是否选中
///</summary>
private bool isSelected;
public bool IsSelected
{
get { return isSelected; }
set
{
SetProperty(ref isSelected, value);
}
} /// <summary>
///名称
///</summary>
public string Name { get; set; }
}
public class BTNSysDeployModel : BindableBase
{ //主车
private ICheckItem commander_BTNMain = new ICheckItem();
public ICheckItem Commander_BTNMain
{
get { return commander_BTNMain; }
set
{
SetProperty(ref commander_BTNMain, value);
}
}
//副车
private ICheckItem commander_BTNSub = new ICheckItem();
public ICheckItem Commander_BTNSub
{
get { return commander_BTNSub; }
set
{
SetProperty(ref commander_BTNSub, value);
}
}
}
转换器:
public class ShowConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
string show = "";
foreach (var item in values)
{
if (item is ICheckItem)
{
ICheckItem ic = (ICheckItem)item;
if (ic.IsSelected)
{
show += ic.Name + " ";
}
}
}
return show;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
...全文
相关推荐
WPF 使用线程更新UI
为了解决这个问题,WPF引入了多线程技术,允许开发者在后台线程处理耗时任务,然后通过特定的方式安全地更新UI。标题“WPF 使用线程更新UI”主要涉及到以下几个关键知识点:1.
WPF的性能问题 -- 项目测试源码
使用后台线程执行计算密集型任务,并通过Dispatcher.BeginInvoke或Task.Run更新UI。6. **依赖属性与属性更改通知**:依赖属性的改变会触发通知,过多的通知会导致性能损失。
第三章 WPF 中实现基于 `INotifyPropertyChanged` 的**状态灯号显示**
在WPF中,当实现了此接口的类的属性值被改变时,它能够触发一个事件通知绑定的UI元素,UI元素进而响应属性值的变化。
WPF基础教程之元素绑定详解
例如:<TextBlock FontSize="{Binding ElementName=sliderFontSize, Path=Value}" />三、绑定错误WPF不会引发异常来通知与数据绑定相关的问题
绑定不是依赖属性
`必须是一个依赖属性,否则绑定将无法工作,因为非依赖属性无法触发必要的通知事件,导致UI无法更新。


