0
I have some problem in wpf application.

In XAML:   

     <Expander Header="SomeHeader" Style="{StaticResource ExpanderStyle}" IsExpanded="{Binding ElementName=Errors, Converter={StaticResource visibilityConverter}, Path=IsExpanded}"  >
                <RichTextBox ScrollViewer.VerticalScrollBarVisibility="Visible" Style="{StaticResource RichTextBoxStyle}" Foreground="Red" IsReadOnly="True">
                        <FlowDocument>
                            <Paragraph>
                                <ItemsControl ItemsSource="{Binding Path=Errors}">
                                    <ItemsControl.ItemTemplate>
                                        <DataTemplate>
                                            <TextBlock Text="{Binding}" Style="{StaticResource ErrorTextBlockStyle}"/>
                                        </DataTemplate>
                                    </ItemsControl.ItemTemplate>
                                </ItemsControl>
                            </Paragraph>
                        </FlowDocument>
                    </RichTextBox>
            </Expander>    
In my ViewModelClass:   

       private List<string> errors;
       public List<string> Errors
       {
            get { return errors; }
            set
            {
                errors = value;
                OnPropertyChanged("Errors");
            }
       }      

コンストラクターで:

       public MainWindowViewModel()
       {    
           if (IsInDesignMode) return;    
           Errors = new List<string>();    
       }    

テスト方法では:

       private void TestExcute()
       {
           Errors = "Some error";    
       }

この状況では、wpf ウィンドウにエラー メッセージが表示されません。しかし、コンストラクターのコードを次のように変更すると:

      public MainWindowViewModel()
      {    
           if (IsInDesignMode) return;    
           Errors = new List<string>{"errorMessage1", "errorMessage2"};    
      }

表示:

エラーメッセージ1

エラーメッセージ2

理由は何ですか ?

新しい質問があります。この wpf アプリケーションでは、Expander コントロールも使用しました。どのように自動展開オープンを作成し、次に Errors.count > 0 を作成しますか?

コンバーターを作成します:

public class VisibilityConverter : IValueConverter { public object Convert(オブジェクト値、タイプ targetType、オブジェクト パラメーター、System.Globalization.CultureInfo カルチャ) { LoadFile loadFile = (LoadFile)value;

        if (loadingFile.ExcelErrors.Count > 0)
        {
            return Visibility.Visible;
        }
        else
        {
            return Visibility.Collapsed;
        }
    }

    public object ConvertBack(object value, Type targetType,
        object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

LoadFile は Errors プロパティを宣言したクラスです。

4

1 に答える 1