在silverlight中选择元素时,以编程方式选择tabItem

本文关键字:选择 编程 方式 tabItem silverlight 元素 | 更新日期: 2024-10-24 11:00:14

我有一个图像编辑器,它在画布上有许多图像元素和文本元素。我有两个单独的选项卡,允许用户重新调整文本或图像的大小。我想在选择文本元素时切换到文本选项卡,在选择图像时切换到图像选项卡。我很难弄清楚怎么做。

主页.xaml-

<!-- Control Panel -->
<sdk:TabControl x:Name="elementEditor" Margin="10,0,10,19" Width="215" Background="#FFD6D6D6"
       Grid.RowSpan="2">//removed selectedIndex binding from here
<sdk:TabItem x:Name="tabCanvasSettings" DataContext="{Binding Project}">
    <sdk:TabItem.Header x:Name="tabCanvas">
        <TextBlock Text="Canvas" />
    </sdk:TabItem.Header>
    <sdk:TabItem.Content>
        <!-- Content -->
    </sdk:TabItem.Content>
</sdk:TabItem>
<!-- Text tab -->
<sdk:TabItem x:Name="tabText" IsSelected="{Binding Path=TabTextSel}">
    <sdk:TabItem.Header>
        <TextBlock Text="Text" />
    </sdk:TabItem.Header>
    <sdk:TabItem.Content>
        <!-- Content -->
    </sdk:TabItem.Content>
</sdk:TabItem>
<!-- Image tab -->
<sdk:TabItem x:Name="tabImage" IsSelected="{Binding Path=TabImgSel}">
    <sdk:TabItem.Header>
        <TextBlock Text="Image" />
    </sdk:TabItem.Header>
    <sdk:TabItem.Content>
        <!-- Content -->
    </sdk:TabItem.Content>
</sdk:TabItem>
</sdk:TabControl>

Project.cs(不是我的主页代码)-

using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Effects;
using System.Windows.Media.Imaging;
using ImageEditor.Client.Behaviors;
using ImageEditor.Client.Views;
using System.Linq;
using ImageEditor.Client.ImageDesignerService;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace ImageEditor.Client.BLL
{
  public class Project : INotifyPropertyChanged
  {
    private bool tabTextSel;
    public bool TabTextSel
    {
        get { return tabTextSel; }
        set
        {
            tabTextSel = value;
            NotifyPropertyChanged("TabTextSel");
        }
    }
    private bool tabImgSel;
    public bool TabImgSel
    {
        get { return tabImgSel; }
        set
        {
            tabImgSel = value;
            NotifyPropertyChanged("TabImgSel");
        }
    }
    //Other properties and methods
    public void element_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        this.SelectedElement = sender as FrameworkElement;
        if (sender is TextBlock)
        {
            this.SelectedTextElement = sender as TextBlock;
            //Change tab to text tab
            tabImgSel = false;
            tabTextSel = true;
        }
        else if (sender is Image)
        {
            this.SelectedImageElement = sender as Image;
            //Change tab to image tab
            tabTextSel = false;
            tabImgSel = true;
        }
    }
  }
}

如何在此处切换选项卡?我相信这可能很简单,我就是无法理解。当我调试时,这些值似乎很好地传递给绑定,但它们仍然没有正确切换

在silverlight中选择元素时,以编程方式选择tabItem

您的属性(TabTextSel和TabImgSel)的类型应该是bool,而不是字符串。您应该将它们设置为true或false(bool)。

您必须分配给属性而不是变量,这样数据绑定才能通过调用NotifyPropertyChanged方法来工作。。。。