0

ListBox绑定了一个源,该源为内部控件的文本属性提供数据。现在我想将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了我的MainPageto :ViewModel

this.DataContext = App.ViewModel;
4

2 回答 2

0

您所要做的就是声明一个静态类(例如,具有每个实例访问权限的单例)并显式设置属性绑定以查看该类而不是父绑定模型。

底线:只需Source通过StaticResource.

于 2013-03-04T18:01:45.907 回答
0

textColor属性是 的一部分,而CViewModel不是Groups作为 ItemTemplate 中数据上下文的对象。

在 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" />
于 2013-03-10T20:49:59.873 回答