0

ListBox内部のコントロールのtextプロパティにデータを提供するソースにバインドしています。Foregroundここで、テキストボックスのプロパティを、メインのリストボックスがバインドされているソース以外の別のソースにバインドしたいと思います。

リストボックスがObservableCollectionにバインドされており、textblockForegroundプロパティがViewModelにあるtextColorにバインドされている必要があります

public SolidColorBrush textColor
{
    get { return new SolidColorBrush(Colors.Red); }
}

どちらもViewModelクラスにいます。使用してみForeground="{Binding textColor}"ましたが、XAMLでまったく表示されないようです。ページで表示できるように何かを行う必要がありますか、それとも親(ListBox)が別のソースを使用しているためですか?

編集 :

詳細:

DataContext.csテーブルを定義したクラスがあります。これらを含むViewModel.csクラスがあります

public class CViewModel : INotifyPropertyChanged
{
    private CDataContext myDB;

    public CViewModel(string DBConnectionString)
    {
        myDB = new CDataContext(DBConnectionString);
    }

    private ObservableCollection<Groups> _allGroups;
    public ObservableCollection<Groups> AllGroups
    {
        get { return _allGroups; }
        set
        {
            _allGroups = value;
            NotifyPropertyChanged("AllGroups");
        }
    }

    public string textColor
    {
        get { return "Tomato"; }
    }
}

次に、XAMLファイルがありますMainPage.xaml

....
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <ListBox Margin="0,8,0,0"  toolkit:TiltEffect.IsTiltEnabled="True" x:Name="list" ItemsSource="{Binding AllGroups}" HorizontalAlignment="Center"  BorderThickness="4">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Grid Background="Orange" Width="125" Height="125" Margin="6" Tap="Counterlist_OnTap">
                    <TextBlock Name="gname" Foreground="White" Text="{Binding Name}" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center" TextWrapping="Wrap"/>
                    <TextBlock Name="ccl" Margin="0,0,0,-5" Foreground="{Binding textColor}" Text="{Binding Count}" FontSize="26" VerticalAlignment="Bottom" HorizontalAlignment="Left" />
                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Grid>
....

私はまた、コードビハインドDataContextで自分のMainPagetoを設定しました:ViewModel

this.DataContext = App.ViewModel;
4

2 に答える 2

0

textColorプロパティはの一部であり、ItemTemplate内のデータコンテキストであるオブジェクトではありCViewModelません。Groups

ItemTemplate内で、次の要素バインディングを使用して親ViewModelにアクセスできます。

<TextBlock Name="ccl" Margin="0,0,0,-5"
           Foreground="{Binding ElementName=ContentPanel, Path=DataContext.textColor}"
           Text="{Binding Count}" FontSize="26"
           VerticalAlignment="Bottom" HorizontalAlignment="Left" />
于 2013-03-10T20:49:59.873 に答える
0

あなたがしなければならないことは、静的クラス (例えば、インスタンスごとのアクセスを持つシングルトン) を宣言し、明示的にプロパティ バインディングを設定して、親にバインドされたモデルの代わりにそのクラスを検索することです。

結論:Source a を介して明示的に を設定するだけStaticResourceです。

于 2013-03-04T18:01:45.907 に答える