C# 绑定在Mvvm wpf和controltab中不起作用
您好,错误是第一次初始化我的选项卡绑定工作,但是当我想更改我的选项卡头的值时,绑定不工作 当我选择一个选项卡后,我想显示按钮并隐藏所有未选择选项卡的按钮 Acceuil.xamlC# 绑定在Mvvm wpf和controltab中不起作用,c#,wpf,mvvm,binding,tabcontrol,C#,Wpf,Mvvm,Binding,Tabcontrol,您好,错误是第一次初始化我的选项卡绑定工作,但是当我想更改我的选项卡头的值时,绑定不工作 当我选择一个选项卡后,我想显示按钮并隐藏所有未选择选项卡的按钮 Acceuil.xaml <TabControl TabStripPlacement="Top" ItemsSource="{Binding Tabs, Mode=TwoWay}" x:Name="ParentTab" SelectedItem="{Binding SelectedTab, Mode=TwoWay}"> <
<TabControl TabStripPlacement="Top" ItemsSource="{Binding Tabs, Mode=TwoWay}" x:Name="ParentTab" SelectedItem="{Binding SelectedTab, Mode=TwoWay}">
<TabControl.ItemTemplate>
<DataTemplate>
<StackPanel Width="Auto" Orientation="Horizontal">
<TextBox Text="{Binding Guid, Mode=TwoWay}" Height="1" Width="1" Visibility="Hidden"></TextBox>
<Image Source="{Binding HeaderImg, Mode=TwoWay}" Height="20" Width="20"/>
<Label Content="{Binding HeaderSrt, Mode=TwoWay}" Height="Auto" Width="Auto"/>
<Button Visibility="{Binding IsEnable, Mode=TwoWay}" Content="X" Height="Auto" Width="Auto" Command="{Binding DataContext.Cmd_CloseTab,ElementName=ParentTab}"/>
</StackPanel>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<ContentControl Content="{Binding Content}" />
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
感谢您的帮助将
TabItem
更改为:
public sealed class TabItem : ViewModelBase
{
private string _headerImg;
private string _headerSrt { get; set; }
private string _guid { get; set; }
private Visibility _isEnable { get; set; }
private ViewModelBase _content { get; set; }
public string HeaderImg
{
get { return _headerImg; }
set
{
_headerImg = value;
RaisePropertyChanged("HeaderImg");
}
}
// Set the properties for the other fields as above
}
将
TabItem
更改为:
public sealed class TabItem : ViewModelBase
{
private string _headerImg;
private string _headerSrt { get; set; }
private string _guid { get; set; }
private Visibility _isEnable { get; set; }
private ViewModelBase _content { get; set; }
public string HeaderImg
{
get { return _headerImg; }
set
{
_headerImg = value;
RaisePropertyChanged("HeaderImg");
}
}
// Set the properties for the other fields as above
}
你好,谢谢,它在工作 答案是:
public sealed class TabItem: ViewModelBase
{
public string HeaderImg { get; set; }
public string HeaderSrt { get; set; }
public string Guid { get; set; }
//public bool IsEnable { get; set; }
public ViewModelBase Content { get; set; }
private Visibility _MessageVisibilty;
public Visibility MessageVisibilty
{
get { return _MessageVisibilty; }
set {
_MessageVisibilty = value;
RaisePropertyChanged("MessageVisibilty");}
}
}
你好,谢谢,它在工作 答案是:
public sealed class TabItem: ViewModelBase
{
public string HeaderImg { get; set; }
public string HeaderSrt { get; set; }
public string Guid { get; set; }
//public bool IsEnable { get; set; }
public ViewModelBase Content { get; set; }
private Visibility _MessageVisibilty;
public Visibility MessageVisibilty
{
get { return _MessageVisibilty; }
set {
_MessageVisibilty = value;
RaisePropertyChanged("MessageVisibilty");}
}
}
TabItem.IsEnable
在属性值更改时从不引发PropertyChangedTabItem
需要从ViewModelBase
继承,并在其属性设置器中正确提升PropertyChanged
。另外,不要将属性命名为可见性IsEnable
。它与启用无关,而是可见性。理想情况下,您应该使属性bool可见
,提升PropertyChanged,并在XAML中使用BoolVisibilityConverter。可见性实际上不是一个viewmodel概念。如果您不想变得哲学化,请保持可见性
,但请重命名属性并提高PropertyChanged。TabItem.IsEnable
在属性值更改时从不提高PropertyChangedTabItem
需要从ViewModelBase
继承,并在其属性设置器中正确提升PropertyChanged
。另外,不要将属性命名为可见性IsEnable
。它与启用无关,而是可见性。理想情况下,您应该使属性bool可见
,提升PropertyChanged,并在XAML中使用BoolVisibilityConverter。可见性实际上不是一个viewmodel概念。保持可见性
如果你不想变得富有哲理,但一定要重命名属性并提高属性更改。这本质上是NetCoreDev三小时前回答的副本。请考虑接受他的回答,这实质上是三小时前NETCORDEV的答案。请考虑接受他的回答。