2

ListBox のカスタム ItemTemplate があり、TextBlock を特別なメソッド/プロパティに「バインド」する必要があります。

私の ListBox ソースはObservableCollection<SearchResultItem>. SearchResultItemいくつかのプロパティが含まれています。

テキストは、別のオブジェクトの値に基づいて変更する必要があります。EG このオブジェクトが「foo」に等しい場合、正しい値を取得するためにメソッドGetProperty("foo")を呼び出すテキスト値が必要です。SearchResultItem

コードのサンプルを次に示します。

<DataTemplate>
..
//Here is a Label bound to the Date Property of the SearchResultItem
<Label Margin="2,2,2,0" Grid.Row="0" Grid.Column="2" Content="{Binding Path=Date}" HorizontalAlignment="Right" HorizontalContentAlignment="Right" />
//Here is the textblock that needs to call the method with the parameter based on the value of the other object.
<TextBlock Margin="2,2,2,0" TextTrimming="CharacterEllipsis"  Grid.Row="0" Grid.Column="1" Text="I need some help there" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="Black"/>
..
</DataTemplate>

それを行う方法、またはそれを行うためのより良い方法について何か考えはありますか?

編集:

SearchResultItem-外部ライブラリからのもので、メソッドのみを公開すると仮定しましょうGetProperty

-「foo」の値がConfigurationManager.AppSettings["propertyName"];役立つ場合に由来するとしましょう。

4

2 に答える 2

0

OK、プロパティは変更されないので、ここに1つの解決策があります。これは、SearchResultItemクラスの別のプロパティを介して行うことができます。

public string MyTextBinding
{
    get 
    {
        return myDictionary.ContainsKey("foo") ? return myDictionary["foo"] : return "myDictionary doesn't contain foo"; 
    }
}

次に、テキストボックスをこのプロパティにバインドします。

<DataTemplate>    
    <Label Margin="2,2,2,0" Grid.Row="0" Grid.Column="2" Content="{Binding Path=Date}" HorizontalAlignment="Right" HorizontalContentAlignment="Right" />
    <TextBlock Margin="2,2,2,0" TextTrimming="CharacterEllipsis"  Grid.Row="0" Grid.Column="1" Text="{Binding Path=MyTextBinding, Mode=OneWay}" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="Black"/>
</DataTemplate>
于 2012-06-19T15:17:35.070 に答える
0

IValueConverteraを取る a を使用してSearchResultItem、期待されるテキストを返すだけです

<TextBlock Margin="2,2,2,0" TextTrimming="CharacterEllipsis" 
           Grid.Row="0" Grid.Column="1" 
           Text="{Binding Path=., 
                Converter={StaticResource PropertyValueFromSearchResultItemConverter}, 
                ConverterParameter=Foo}" 
           HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="Black"/>
于 2012-06-19T15:57:59.237 に答える