質問

リストピッカーのアイテムのフォントサイズを変更しようとしています。 FullModeItemTemplateを使用して、Fontsizeなどを変更できます。

問題は、テンプレート内のアイテムのテキストをバインドする方法がわからないことです

<DataTemplate x:Name="PickerFullModeItemTemplate">
            <StackPanel Orientation="Horizontal" Margin="16 21 0 20" Background="Orange" Width="110" Height="110" HorizontalAlignment="Center" VerticalAlignment="Center">
                <TextBlock Text="{WHAT TO TYPE HERE?}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="5" FontSize="36"/>
            </StackPanel>
        </DataTemplate>

このようなc#でitemsourceを設定することにより、リストピッカーを入力します

foreach (Item i in weight)
            {
                sourceInput.Add(i.name);
            }
        }
        InputSelector.ItemsSource = sourceInput;

これにより、文字列のみが含まれているItemsourceリストが残り、各アイテムのテキストをバインドする方法がわかりません。 Itemsourceリストがこの形式であるときにそれを行う方法についてのいくつかの投稿を読みました

source.Add(new Cities() { Name = "Mexico", Country = "MX", Language = "Spanish" });

        this.listPicker.ItemsSource = source;

そして、XAML部分はこのようなものです

<TextBlock Text="{Binding Name}"/>

どんな助けも大歓迎です:)

アップデート

SourceItemsへのバインディングのための正しいバインディングを見つけました。

<TextBlock Text="{Binding BindsDirectlyToSource=True}"/>

それが道のように見えます、そしてソースアイテムはテキストブロックにバインドされます

役に立ちましたか?

解決

タイプのオブジェクトを追加する必要があります Cities あなたに sourceInput コレクション。

タイピング Text="{Binding Name}" 正しい。

ほとんどの場合、都市のクラスは実装していません InotifyPropertyChanged インターフェース。 UI要素をバインドする名前やその他のプロパティを更新するたびに、UIに通知する必要があります。

他のヒント

<TextBlock Text="{Binding Name}"/>

クールですが、リストピッカーにはdisplaymemberpathプロパティもあります。

listpicker add:

displaymemberpath = "name"

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top