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 プロパティを宣言したクラスです。