C# 将ListBox内的控件绑定到ListBox源以外的源
我有一个C# 将ListBox内的控件绑定到ListBox源以外的源,c#,windows-phone-7,binding,C#,Windows Phone 7,Binding,我有一个列表框绑定到一个源,该源向其中控件的文本属性提供数据。现在我想将我的文本框的前台属性绑定到不同的源,而不是主列表框绑定到的源 我的列表框绑定到ObservableCollection,我希望我的textblock前景属性绑定到位于ViewModel中的textColor public SolidColorBrush textColor { get { return new SolidColorBrush(Colors.Red); } } 两者都在ViewModel类中。 我尝试
列表框
绑定到一个源,该源向其中控件的文本属性提供数据。现在我想将我的文本框的前台
属性绑定到不同的源,而不是主列表框绑定到的源
我的列表框绑定到ObservableCollection,我希望我的textblock前景属性绑定到位于ViewModel中的textColor
public SolidColorBrush textColor
{
get { return new SolidColorBrush(Colors.Red); }
}
两者都在ViewModel
类中。
我尝试使用前台=“{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"; }
}
}
我还将我的主页的DataContext
设置为ViewModel
中的代码隐藏:
this.DataContext = App.ViewModel;
您所要做的就是声明一个静态类(例如,具有每个实例访问权限的单例),并显式地将属性绑定设置为在该类中查找,而不是在父绑定模型中查找
底线:只需通过StaticResource
显式设置源代码
textColor
属性是CViewModel
的一部分,而不是作为ItemTemplate内数据上下文的组
对象
在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" />
这应该可以正常工作。我使用了一个默认的数据绑定应用程序,将您的属性添加到ItemViewModel
,并在MainPage.xaml的第36行末尾添加了前台绑定,当在模拟器中运行时,它正确设置了文本块的颜色。请提供一个完整的例子,重新创建您的问题,我们将帮助确定您的问题所在。谢谢我编辑了这篇文章!您现在已经定义了两次textColor
。它是字符串还是SolidColorBrush?是的,我把它改成了字符串,因为当我在XAML中读取它时,我认为它需要字符串!如果要通过绑定进行设置,则需要正确设置类型。XAML解析器将在执行初始解析时尝试转换字符串,但在绑定属性时,您不会获得此自动转换。您可以告诉我如何进行转换,因为我对Windows Phone和XAML术语不太熟悉!
<TextBlock Name="ccl" Margin="0,0,0,-5"
Foreground="{Binding ElementName=ContentPanel, Path=DataContext.textColor}"
Text="{Binding Count}" FontSize="26"
VerticalAlignment="Bottom" HorizontalAlignment="Left" />