Случайное поведение свойства SelectedItem нашего пользовательского Tabitem / tabControlC#

Место общения программистов C#
Ответить
Anonymous
 Случайное поведение свойства SelectedItem нашего пользовательского Tabitem / tabControl

Сообщение Anonymous »

Проблема:
Наше приложение несколько сходно построено для общих веб -браузеров, что означает, что различные элементы управления пользователем сгруппированы на вкладки, которые могут быть созданы, переключается между и закрытым. Для этого мы создали пользовательский элемент ClosableTab TabControl . это обычно работает довольно хорошо, но так часто выбор вкладки озадачивает зажигание. на какую -то конкретную вкладку, казалось бы, выбранную случайным образом. она всегда прыгает на эту же вкладку, пока пользователь не создаст новую вкладку и не удалит ее (каким -то образом сбросить процесс выбора?!). Strong> Context:
Мы имеем дело с этим вопросом для значительной части 3+ лет, не способных его решить. Приложение записано в WPF и C# в настоящее время таргетинг .NET Framework 4.7.2. Мы действительно не следуем шаблону программирования MVVM, хотя мы стараемся разделять логику /конструкции /пользовательский интерфейс Bussines Logic /Data.
Основной TabControl находится по адресу mainwindow.xaml :

Код: Выделить всё

[code]public void AddItem(Item page)
{
if (!page.ErrorClose)
{
tcMain.Items.Insert(tcMain.Items.Count - 1, page.TabPage);
tcMain.SelectedItem = page.TabPage;
page.SetLanguage();
}
}

public TabItem GetActual()
{
return tcMain.SelectedItem as TabItem;
}

public void SetActual(TabItem item)
{
tcMain.SelectedItem = item;
}

private void tcMain_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
//ak je len jedna zalozka, nerob nic
if (tcMain.Items.Count 
public class ClosableTab : TabItem
{
// Constructor
public ClosableTab()
{
// Create an instance of the usercontrol
CloseableHeader closableTabHeader = new CloseableHeader();
// Assign the usercontrol to the tab header
this.Header = closableTabHeader;

// Attach to the CloseableHeader events
// (Mouse Enter/Leave, Button Click, and Label resize)
closableTabHeader.button_close.MouseEnter +=
new MouseEventHandler(button_close_MouseEnter);
closableTabHeader.button_close.MouseLeave +=
new MouseEventHandler(button_close_MouseLeave);
closableTabHeader.button_close.Click +=
new RoutedEventHandler(button_close_Click);
}

// Property - Set the Title of the Tab
// Override OnSelected - Show the Close Button
// Override OnUnSelected - Hide the Close Button
// Override OnMouseEnter - Show the Close Button
// Override OnMouseLeave - Hide the Close Button (If it is NOT selected)
// Button MouseEnter - When the mouse is over the button - change color to Red
// Button MouseLeave - When mouse is no longer over button - change color back to black
// Button Close Click - Remove the Tab - (or raise an event indicating a "CloseTab"  event has occurred)
и, наконец, какой-то пользовательский интерфейс, который использует этот kensabletab.cs :
private void cm_Connect_Click(object sender, RoutedEventArgs e)
{
MainWindow.AppWindow.AddItem(new Search());
}

/// \
/// Interaction logic for Search.xaml
/// \
public partial class Search
{
public ObservableCollection\ AvailablePorts { get; set; }

public Search()
{
InitializeComponent();

//daj ze mozem otvorit
ErrorClose = false;

//nastav priradenie
AvailablePorts = new ObservableCollection();
dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 5);
Run = true;
dispatcherTimer.Start();
dispatcherTimer_Tick(null, null);

Image = ToolFuncs.GetIcon("IcoConnect");
comboBox_ConnectionType.SelectedIndex = 0;
comboBox_Port.ItemsSource = AvailablePorts;
}
...
< /code>
Есть ли у вас есть идеи, что может вызвать это. Мы уже пытались проверить, не поднимается ли какое -то событие в цепочке пользовательского интерфейса, чтобы насильно установить SelectedItem и так далее, но не повезло.


Подробнее здесь: https://stackoverflow.com/questions/793 ... tabcontrol
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»