wpf属性更新后通知的问题

swtee 2019-01-11 05:29:50
问题:两个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();
}
}
...全文
907 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
星辰落 2019-01-28
  • 打赏
  • 举报
回复
INotifyPropertyChanged,还有前端绑定里设置一下mode=twoway
qq14923349 2019-01-23
  • 打赏
  • 举报
回复
BindableBase 这玩意我用过 你要确定 是否特定场景才没收到通知?这是个坑
改用INotify就ok了
swtee 2019-01-20
  • 打赏
  • 举报
回复
自顶,求大神
swtee 2019-01-20
  • 打赏
  • 举报
回复
引用 1 楼 ilikeff8 的回复:
用INotifyPropertyChanged接口更方便简单


<CheckBox Content="上传失败" IsChecked="{Binding SearchInterfaceLogIsNotSuccess, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource AlignmentCheckBoxStyle}" Canvas.Left="664" Canvas.Top="25" Width="92" Height="18"/>



int searchInterfaceLogIsNotSuccess = 0;
public int SearchInterfaceLogIsNotSuccess
{
get
{ return searchInterfaceLogIsNotSuccess; }
set
{
if (searchInterfaceLogIsNotSuccess != value)
{
searchInterfaceLogIsNotSuccess = value;
OnPropertyChanged(nameof(SearchInterfaceLogIsNotSuccess));
}
}
}

public class MainViewModel : INotifyPropertyChanged

public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

1.BindableBase和INotifyPropertyChanged是用是一样的,项目组要求使用前者;
2.情况不一样,您绑定的是一个int类型的属性,我的控件绑定的是一个引用类型的属性
我的问题简单的可以表达为如:
<Label Grid.Row="1" Name="linkLable" Content="{Binding Stu,Converter={StaticResource sc}}" HorizontalAlignment="Center" VerticalAlignment="Center"/ >
private Student _stu = new Student();

public Student Stu
{
get { return _stu; }
set { SetProperty(ref _stu, value); }
}

public class Student : BindableBase
{
private string _name;
public string Name
{
get
{
return _name;
}
set
{
SetProperty(ref _name, value);
}
}
int _age;
public int Age
{
get
{
return _age;
}
set
{
SetProperty(ref _age, value);
}
}
}
ilikeff8 2019-01-11
  • 打赏
  • 举报
回复
我程序里返回要用整形,所以定义为int,会自动转换,searchInterfaceLogIsNotSuccess定义成bool也可以
ilikeff8 2019-01-11
  • 打赏
  • 举报
回复
IsChecked返回是整型
ilikeff8 2019-01-11
  • 打赏
  • 举报
回复
用INotifyPropertyChanged接口更方便简单


<CheckBox Content="上传失败" IsChecked="{Binding SearchInterfaceLogIsNotSuccess, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource AlignmentCheckBoxStyle}" Canvas.Left="664" Canvas.Top="25" Width="92" Height="18"/>



int searchInterfaceLogIsNotSuccess = 0;
public int SearchInterfaceLogIsNotSuccess
{
get
{ return searchInterfaceLogIsNotSuccess; }
set
{
if (searchInterfaceLogIsNotSuccess != value)
{
searchInterfaceLogIsNotSuccess = value;
OnPropertyChanged(nameof(SearchInterfaceLogIsNotSuccess));
}
}
}

public class MainViewModel : INotifyPropertyChanged

public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}



代码下载链接: https://pan.quark.cn/s/23ff226fe24b ### iTest自动化测试工具知识点详解#### 一、iTest自动化测试工具简介iTest是由业界领先测试设备制造商Spirent所研发的一款自动化测试工具。该工具为用户呈现了一个集成化的自动化测试解决方案,借助这一工具,用户能够完成软件及网络测试的编写与自动化执行。iTest不仅适用于专业的测试工程师,对于非测试人员来说,同样是一个功能强大的工具,能够协助他们对网络中的设备和应用进行访问和自动化操作。#### 二、iTest Lite快速入门指南iTest Lite是一款免费提供给用户的版本,其目的是为用户呈现一个简明的iTest产品概览。用户可以从官方网站(www.fanfaresoftware.com)获取并安装iTest Lite。此工具不仅能够支持用户进行软件和网络测试,还能用于对网络上的设备或应用程序进行管理和自动化。#### 三、iTest的工作流程- **主页内容**:在iTest被启动之后,主页内容将展示在右侧,而活动列表则位于左侧。主页上不仅包含欢迎消息,还会提供iTest工作流程的高级图示以及链接到Fanfare社区的入口,用户可以通过论坛帖子、教程视频等资源进一步了解iTest。 - **活动列表**:这是使用iTest功能的推荐起点。活动列表包含以下几个部分: - **连接设备**:一种便捷的方法来验证iTest是否能够连接到测试设备。 - **构建拓扑结构**:在这一步骤中,可以迅速定义一组想要进行测试的设备或应用程序。 - **开发测试用例**:创建一个自动化的测试用例,用于针对任何特定的拓扑结构进行测试。 - **查看测试报告**:访问个人...
代码下载链接: https://pan.quark.cn/s/89ea75840350 STM32微控制器的实时时钟(RTC)作为一个独立的计时单元,能够在系统重启或从休眠状态激活后持续保持时间设置不变。本文将详细探究STM32 RTC的运行机制,涵盖时钟结构图解析以及时间显示的原理。需要明确的是,STM32的RTC模块坐落于备份领域(Backup domain),它借助32.768kHz的辅助晶体振荡器作为时钟供给。在进行RTC编程实践时,务必小心谨慎地处理与RTC相关的寄存器配置。随后,我们将借助RTC时钟结构图展开深入剖析。时钟结构图主要由两大块构成:APB1接口区块与RTC主控单元。APB1接口区块负责对与RTC关联的寄存器进行数据交互,而RTC主控单元内含两个子模块:RTC分频调节模块以及一个32位可变步长计数器。在RTC主控单元内部,有几个关键寄存器是必须掌握的:1. RTC_DIV(RTC分频调节余数寄存器):此寄存器旨在获取超越秒级的更高精度时间(如0.1秒、0.01秒)。该寄存器在数值减至极值后会由硬件自动重置。其数值由RTC_PRL(RTC分频调节装载寄存器)提供,其时钟频率源自RTCCLK。2. RTC_PRL(RTC分频调节装载寄存器):它为RTC_DIV提供重置数值,同时用于设定时钟频率的缩放比例。例如,若晶体振荡器频率为32.768KHz,将RTC_PRL设定为32767,即可得到每秒的计数速率。3. RTC_CNT(RTC计数器寄存器):该寄存器记录秒数,并可用于触发计数器溢出中断。4. RTC_ALR(RTC闹钟寄存器):用于设定闹钟时刻,一旦计数器的数值与闹钟寄存器匹配,并且中断功能已启用,便会引发一个闹钟中断事件。在物理实现层...

8,757

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧