Ошибки привязки к свернутым элементам графического интерфейса - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть много привязок в сетке, которые свернуты или видны на основе выбранного элемента в дереве.поэтому, основываясь на объекте, появляется правильное представление, а другое сворачивается.

Но я получаю множество ошибок привязки элементов графического интерфейса в свернутых представлениях.это так, потому что у меня есть «myselecteditem» в модели представления, которая подходит к открытому представлению, но не к свернутым.

мой подход глуп?могу ли я подавить привязки для графических элементов в свернутой сетке?

Код (сокращенный для ленивых читателей):

XAML:

<Grid x:Name="G_G_Content" Grid.Column="1">
    <Grid x:Name="G_G_Abrechnung_Control" Visibility="Collapsed">
        [...]
    </Grid>
    <Grid x:Name="G_G_Mitglied_Aktion" Visibility="Collapsed">
        [...]
    </Grid>
    <Grid x:Name="G_G_Mitglied_Aktion_Nachweis" Visibility="Visible">
        [...]
    </Grid>
</Grid>

        <TreeView
            x:Name="G_tv_explorer"
            Grid.Row="1"
            HorizontalAlignment="Stretch"
            VerticalAlignment="Stretch"
            ItemsSource="{Binding TreeViewItemSource, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
            SelectedItemChanged="G_tv_explorer_SelectedItemChanged"
            TreeViewItem.Expanded="TreeViewItem_Expanded" />

C #:

private void G_tv_explorer_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
        //set active treeviewitem
        if (G_tv_explorer.SelectedItem != null)
        {
            //set treeview && ViMo
            ViMo.TreeViewSelectedItem = e.NewValue;
            RedrawGui();
            ViMo.MySelectedItem = ((TreeViewItem)e.NewValue).Tag;
        }
}

public void RedrawGui()
{
    //redraw gui, dependant on selectedtreeviewitem
    if (ViMo.TreeViewSelectedItem != null)
    {
        if(ViMo.TreeViewSelectedItem is string)
            MessageBox.Show("Dummy");
        else
        {
//this is a placeholder
            if (((TreeViewItem)ViMo.TreeViewSelectedItem).Header.ToString() == "Verwaltung")
            {
                G_G_Mitglied_Aktion_Nachweis.Visibility = System.Windows.Visibility.Collapsed;
                G_G_Abrechnung_Control.Visibility = System.Windows.Visibility.Visible;
            }
            else if (((TreeViewItem)ViMo.TreeViewSelectedItem).Tag is MVVM.Model.Jahresabschluss)
            {
                G_G_Mitglied_Aktion_Nachweis.Visibility = System.Windows.Visibility.Collapsed;
                G_G_Abrechnung.Visibility = System.Windows.Visibility.Visible;
            }
        }
      }
    }

Где RedrawGUI устанавливает только видимые / свернутые сетки, основываясь на типе объекта SelectedItem

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...