Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 绑定在Mvvm wpf和controltab中不起作用_C#_Wpf_Mvvm_Binding_Tabcontrol - Fatal编程技术网

C# 绑定在Mvvm wpf和controltab中不起作用

C# 绑定在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}"> <

您好,错误是第一次初始化我的选项卡绑定工作,但是当我想更改我的选项卡头的值时,绑定不工作

当我选择一个选项卡后,我想显示按钮并隐藏所有未选择选项卡的按钮

Acceuil.xaml

<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
在属性值更改时从不引发PropertyChanged
TabItem
需要从
ViewModelBase
继承,并在其属性设置器中正确提升
PropertyChanged
。另外,不要将属性命名为
可见性
IsEnable
。它与启用无关,而是可见性。理想情况下,您应该使属性
bool可见
,提升PropertyChanged,并在XAML中使用BoolVisibilityConverter。可见性实际上不是一个viewmodel概念。如果您不想变得哲学化,请保持
可见性
,但请重命名属性并提高PropertyChanged。
TabItem.IsEnable
在属性值更改时从不提高PropertyChanged
TabItem
需要从
ViewModelBase
继承,并在其属性设置器中正确提升
PropertyChanged
。另外,不要将属性命名为
可见性
IsEnable
。它与启用无关,而是可见性。理想情况下,您应该使属性
bool可见
,提升PropertyChanged,并在XAML中使用BoolVisibilityConverter。可见性实际上不是一个viewmodel概念。保持
可见性
如果你不想变得富有哲理,但一定要重命名属性并提高属性更改。这本质上是NetCoreDev三小时前回答的副本。请考虑接受他的回答,这实质上是三小时前NETCORDEV的答案。请考虑接受他的回答。