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
で自分のMainPage
toを設定しました:ViewModel
this.DataContext = App.ViewModel;