質問
2018年8月15日水曜日 0:44
xamlで、localのファイルを呼び出しているのですが、
そのファイルのVisiblityのbindが上手くいきません。
Flgには、bool値が入っていることは確認済みです。
どのような方法があるのか教えていただけますでしょうか。
■xaml側
<local:Item Grid.Row="0" Grid.Column="0" DataContext="{Binding ItemList }" Visibility="{Binding Flg, Converter={StaticResource BooleanToCollapsedConverter}}"/>
■Converter
class BooleanToCollapsedConverter : IValueConverter
{
/// <summary>
/// Convert
/// </summary>
/// <param name="value"></param>
/// <param name="targetType"></param>
/// <param name="parameter"></param>
/// <param name="culture"></param>
/// <returns></returns>
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
try
{
if (value != null && value != DependencyProperty.UnsetValue)
{
bool? val = value as bool?;
if (val.HasValue)
{
return val.Value ? Visibility.Visible : Visibility.Collapsed;
}
}
return Visibility.Visible;
}
catch
{
return Visibility.Visible;
}
}
/// <summary>
/// ConvertBack
/// </summary>
/// <param name="value"></param>
/// <param name="targetType"></param>
/// <param name="parameter"></param>
/// <param name="culture"></param>
/// <returns></returns>
public object ConvertBack(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
}
すべての返信 (3)
2018年8月15日水曜日 1:23 ✅回答済み | 1 票
とりあえず、Convertのif (val.HasValue)あたりにブレークポイント張った時にブレークするかどうか確認するとか。
VとVMの構造が分からないと何とも言えませんが、
- local:ItemにバインディングされているVMオブジェクトにはItemListプロパティが存在している
- ItemListプロパティの型は、Flgプロパティを持っている
という構造になっていますか?
2018年8月15日水曜日 2:52
うまくバインドできていない場合、Visual Studioの出力ウインドウにエラーが表示されていると思うですが、何と表示されているのでしょうか?
★良い回答には質問者は回答済みマークを、閲覧者は投票を!
2018年8月15日水曜日 5:42 | 1 票
そもそもになってしまうのですが、ItemListがnullの時に効いていなかっただけでした。
nullの時は、勝手にfalseが来るだろうと思い込んでいたので、そこが原因でした。
ありがとうございました。