いくつかの列を持つ ListView があります。各 GridViewColumn をプロパティにバインドしても問題ありません。たとえば、次のようになります。
<ListView ItemsSource="{Binding MyList}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Name}">
<GridViewColumnHeader Content="Name"/>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
GridViewColumn を 2 つのプロパティにマルチバインドしようとすると、問題が発生します。
<GridViewColumn>
<GridViewColumn.DisplayMemberBinding>
<MultiBinding Converter="{StaticResource DisplayMemberConverter}">
<Binding Path="HighestScore"/>
<Binding Path="IsHighestScoreApplicable"/>
</MultiBinding>
</GridViewColumn.DisplayMemberBinding>
<GridViewColumnHeader Content"Highest_Score"/>
私が使用するコンバーターは次のとおりです。
public class DisplayMemberConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
int int_value = (int)values[0];
bool bool_value = (bool)values[1];
if (bool_value == true)
return int_value;
return null;
}
...
}
「IsHighestScoreApplicable」プロパティがfalseの場合-リストビューに何も表示されず(空)、trueの場合-HighestScore値が表示されますが、うまくいきません-私が得るのは''IsHighestScoreApplicable' が true の場合でも空の列。さらに、Convert() メソッドをデバッグすると、if ステートメントが次のようになっていることがわかります。
if (bool_value == true)
保持され、戻り値は int_value ですが、それでもリスト ビューには何も表示されません。
どうしたの?
万歳、デイブ