我有一个ListBox
绑定到一个源,它为内部控件的text属性提供数据。现在我想将我的文本框的Foreground
属性绑定到除主ListBox绑定的源之外的其他源!
我的列表框绑定到ObservableCollection,我希望我的textblock Foreground属性绑定到位于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
的{{1}}设置为MainPage
:
ViewModel
答案 0 :(得分:0)
您所要做的就是声明一个静态类(例如,具有每个实例访问权限的单例)并显式设置属性绑定以查找该类而不是父绑定模型。
底线:只需将Source
明确设置为StaticResource
。
答案 1 :(得分:0)
textColor
属性是CViewModel
的一部分,而不是ItemTemplate中datacontext的Groups
对象。
在ItemTemplate中,您可以使用以下Element绑定与父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" />