【问题标题】:Access property of object in View from ViewModel从 ViewModel 访问 View 中对象的属性
【发布时间】:2014-01-09 16:49:49
【问题描述】:

我的视图中有一个TabControl 和多个TabItems。我想从我的 ViewModel 中更改 TabItems 之一的 IsSelected 属性。

这是视图的 xaml 代码:

<TabControl Height="50" Margin="12,0,0,0">
                    <TabItem Name="tiCaptureSetup" >
                        <TabItem.Header>                            
                            <Button Name="btnCaptureSetup"
                                    Grid.Column="0"
                                    Width="90"
                                    Height="40"
                                    Margin="5"
                                    ToolTip="Capture Setup"
                                    Content="Capture Setup"
                                    Click="btnCaptureSetup_Click"
                                    IsEnabled="{Binding Path=CaptureSetupButtonStatus, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"
                                    IsDefault="True"
                                    ></Button>
                        </TabItem.Header>
                    </TabItem>

这是 View 中的 C# 代码

private void btnCaptureSetup_Click(object sender, RoutedEventArgs e)
        {
            tiCaptureSetup.IsSelected = true;   //select Capture Setup TabItem

            MenuLSViewModel vm = (MenuLSViewModel)this.DataContext;

            if (vm != null)
            {
                vm.CaptureSetupCommand.Execute(null);
            }
        }

我想从 ViewModel 更改 tiCaptureSetup.IsSelected

有什么建议吗?

【问题讨论】:

    标签: wpf view properties viewmodel


    【解决方案1】:

    最简单的方法:在 ViewModel 中创建一个名为 IsCaptureSetupSelected 的属性并将其绑定到 tiCaptureSetup.IsSelected 属性

    视图模型:

    private bool _IsCaptureSetupSelected;
    public bool IsCaptureSetupSelected
    {
        get { return _IsCaptureSetupSelected; }
        set
        {
                if (_IsCaptureSetupSelected != value)
                {
                        _IsCaptureSetupSelected = value;
                        RaisePropertyChanged();
                }
        }
    }
    

    XAML:

    <TabItem Name="tiCaptureSetup" IsSelected="{Binding IsCaptureSetupSelected}">
    

    请注意,我假设您在 ViewModel 中使用 MVVMLight 之类的东西...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多