Silverlight 如何将属性绑定到列表项值

用户2413453

我是 XAML 的新手,正在尝试使用这些功能。在这个阶段,我正在创建一个填充了静态数据的数据网格。

我想知道如何禁用某些行,我尝试将 IsEnabled 属性绑定到模型,然后给它布尔值,如下所示:

编辑: XAML

 <UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" x:Class="SilverlightApplication3.MainPage"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<UserControl.Resources>
    <Style x:Key="DataGridStyle1" TargetType="sdk:DataGrid">
        <Setter Property="RowBackground" Value="#AAEAEFF4"/>
        <Setter Property="AlternatingRowBackground" Value="#00FFFFFF"/>
        <Setter Property="Background" Value="#FFFFFFFF"/>
        <Setter Property="HeadersVisibility" Value="Column"/>
        <Setter Property="HorizontalScrollBarVisibility" Value="Auto"/>
        <Setter Property="VerticalScrollBarVisibility" Value="Auto"/>
        <Setter Property="SelectionMode" Value="Extended"/>
        <Setter Property="CanUserReorderColumns" Value="True"/>
        <Setter Property="CanUserResizeColumns" Value="True"/>
        <Setter Property="CanUserSortColumns" Value="True"/>
        <Setter Property="AutoGenerateColumns" Value="True"/>
        <Setter Property="RowDetailsVisibilityMode" Value="VisibleWhenSelected"/>
        <Setter Property="BorderBrush">
            <Setter.Value>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop Color="#FFA3AEB9" Offset="0"/>
                    <GradientStop Color="#FF8399A9" Offset="0.375"/>
                    <GradientStop Color="#FF718597" Offset="0.375"/>
                    <GradientStop Color="#FF617584" Offset="1"/>
                </LinearGradientBrush>
            </Setter.Value>
        </Setter>
        <Setter Property="BorderThickness" Value="1"/>
        <Setter Property="DragIndicatorStyle">
            <Setter.Value>
                <Style TargetType="ContentControl">
                    <Setter Property="Foreground" Value="#7FFFFFFF"/>
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="ContentControl">
                                <Grid>
                                    <VisualStateManager.VisualStateGroups>
                                        <VisualStateGroup x:Name="SortStates">
                                            <VisualState x:Name="Unsorted"/>
                                            <VisualState x:Name="SortAscending">
                                                <Storyboard>
                                                    <DoubleAnimation Duration="0" To="1.0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SortIcon"/>
                                                </Storyboard>
                                            </VisualState>
                                            <VisualState x:Name="SortDescending">
                                                <Storyboard>
                                                    <DoubleAnimation Duration="0" To="1.0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SortIcon"/>
                                                    <DoubleAnimation Duration="0" To="-.9" Storyboard.TargetProperty="(RenderTransform).ScaleY" Storyboard.TargetName="SortIcon"/>
                                                </Storyboard>
                                            </VisualState>
                                        </VisualStateGroup>
                                    </VisualStateManager.VisualStateGroups>
                                    <Rectangle x:Name="BackgroundRectangle" Grid.ColumnSpan="2" Fill="#66808080" Stretch="Fill"/>
                                    <Rectangle x:Name="BackgroundGradient" Grid.ColumnSpan="2" Opacity="0" Stretch="Fill">
                                        <Rectangle.Fill>
                                            <LinearGradientBrush EndPoint=".7,1" StartPoint=".7,0">
                                                <GradientStop Color="#FFFFFFFF" Offset="0.015"/>
                                                <GradientStop Color="#F9FFFFFF" Offset="0.375"/>
                                                <GradientStop Color="#E5FFFFFF" Offset="0.6"/>
                                                <GradientStop Color="#C6FFFFFF" Offset="1"/>
                                            </LinearGradientBrush>
                                        </Rectangle.Fill>
                                    </Rectangle>
                                    <Grid HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition/>
                                            <ColumnDefinition Width="Auto"/>
                                        </Grid.ColumnDefinitions>
                                        <ContentPresenter Content="{TemplateBinding Content}"/>
                                        <Path x:Name="SortIcon" Grid.Column="1" Data="F1 M -5.215,6.099L 5.215,6.099L 0,0L -5.215,6.099 Z " Fill="#7FFFFFFF" HorizontalAlignment="Left" Margin="4,0,0,0" Opacity="0" RenderTransformOrigin=".5,.5" Stretch="Uniform" VerticalAlignment="Center" Width="8">
                                            <Path.RenderTransform>
                                                <ScaleTransform ScaleY=".9" ScaleX=".9"/>
                                            </Path.RenderTransform>
                                        </Path>
                                    </Grid>
                                </Grid>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </Setter.Value>
        </Setter>
        <Setter Property="DropLocationIndicatorStyle">
            <Setter.Value>
                <Style TargetType="ContentControl">
                    <Setter Property="Background" Value="#FF3F4346"/>
                    <Setter Property="Width" Value="2"/>
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="ContentControl">
                                <Rectangle Fill="{TemplateBinding Background}" Height="{TemplateBinding Height}" Width="{TemplateBinding Width}"/>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </Setter.Value>
        </Setter>
        <Setter Property="GridLinesVisibility" Value="Vertical"/>
        <Setter Property="HorizontalGridLinesBrush" Value="#FFC9CACA"/>
        <Setter Property="IsTabStop" Value="True"/>
        <Setter Property="VerticalGridLinesBrush" Value="#FFC9CACA"/>
        <Setter Property="IsEnabled" Value="{Binding enabled}"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="sdk:DataGrid">
                    <Grid>
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="CommonStates">
                                <VisualState x:Name="Normal"/>
                                <VisualState x:Name="Disabled">
                                    <Storyboard>
                                        <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="DisabledVisualElement"/>
                                    </Storyboard>
                                </VisualState>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                        <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="2">
                            <Grid x:Name="Root" Background="{TemplateBinding Background}">
                                <Grid.Resources>
                                    <ControlTemplate x:Key="TopLeftHeaderTemplate" TargetType="sdk:DataGridColumnHeader">
                                        <Grid x:Name="Root">
                                            <Grid.RowDefinitions>
                                                <RowDefinition/>
                                                <RowDefinition/>
                                                <RowDefinition Height="Auto"/>
                                            </Grid.RowDefinitions>
                                            <Border BorderBrush="#FFC9CACA" BorderThickness="0,0,1,0" Background="#FF1F3B53" Grid.RowSpan="2">
                                                <Rectangle Stretch="Fill" StrokeThickness="1">
                                                    <Rectangle.Fill>
                                                        <LinearGradientBrush EndPoint=".7,1" StartPoint=".7,0">
                                                            <GradientStop Color="#FCFFFFFF" Offset="0.015"/>
                                                            <GradientStop Color="#F7FFFFFF" Offset="0.375"/>
                                                            <GradientStop Color="#E5FFFFFF" Offset="0.6"/>
                                                            <GradientStop Color="#D1FFFFFF" Offset="1"/>
                                                        </LinearGradientBrush>
                                                    </Rectangle.Fill>
                                                </Rectangle>
                                            </Border>
                                            <Rectangle Fill="#FFDBDCDC" Height="1" Grid.RowSpan="2" StrokeThickness="1" VerticalAlignment="Bottom" Width="Auto"/>
                                        </Grid>
                                    </ControlTemplate>
                                    <ControlTemplate x:Key="TopRightHeaderTemplate" TargetType="sdk:DataGridColumnHeader">
                                        <Grid x:Name="RootElement">
                                            <Grid.RowDefinitions>
                                                <RowDefinition/>
                                                <RowDefinition/>
                                                <RowDefinition Height="Auto"/>
                                            </Grid.RowDefinitions>
                                            <Border BorderBrush="#FFC9CACA" BorderThickness="1,0,0,0" Background="#FF1F3B53" Grid.RowSpan="2">
                                                <Rectangle Stretch="Fill">
                                                    <Rectangle.Fill>
                                                        <LinearGradientBrush EndPoint=".7,1" StartPoint=".7,0">
                                                            <GradientStop Color="#FCFFFFFF" Offset="0.015"/>
                                                            <GradientStop Color="#F7FFFFFF" Offset="0.375"/>
                                                            <GradientStop Color="#E5FFFFFF" Offset="0.6"/>
                                                            <GradientStop Color="#D1FFFFFF" Offset="1"/>
                                                        </LinearGradientBrush>
                                                    </Rectangle.Fill>
                                                </Rectangle>
                                            </Border>
                                        </Grid>
                                    </ControlTemplate>
                                </Grid.Resources>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition/>
                                    <ColumnDefinition Width="Auto"/>
                                </Grid.ColumnDefinitions>
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="Auto"/>
                                    <RowDefinition/>
                                    <RowDefinition Height="Auto"/>
                                    <RowDefinition Height="Auto"/>
                                </Grid.RowDefinitions>
                                <sdk:DataGridColumnHeader x:Name="TopLeftCornerHeader" Template="{StaticResource TopLeftHeaderTemplate}" Width="22"/>
                                <sdk:DataGridColumnHeadersPresenter x:Name="ColumnHeadersPresenter" Grid.Column="1"/>
                                <sdk:DataGridColumnHeader x:Name="TopRightCornerHeader" Grid.Column="2" Template="{StaticResource TopRightHeaderTemplate}"/>
                                <Rectangle x:Name="ColumnHeadersAndRowsSeparator" Grid.ColumnSpan="3" Fill="#FFC9CACA" Height="1" StrokeThickness="1" VerticalAlignment="Bottom" Width="Auto"/>
                                <sdk:DataGridRowsPresenter x:Name="RowsPresenter" Grid.ColumnSpan="2" Grid.Row="1"/>
                                <Rectangle x:Name="BottomRightCorner" Grid.Column="2" Fill="#FFE9EEF4" Grid.Row="2"/>
                                <Rectangle x:Name="BottomLeftCorner" Grid.ColumnSpan="2" Fill="#FFE9EEF4" Grid.Row="2"/>
                                <ScrollBar x:Name="VerticalScrollbar" Grid.Column="2" Margin="0,-1,-1,-1" Orientation="Vertical" Grid.Row="1" Width="18"/>
                                <Grid Grid.Column="1" Grid.Row="2">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="Auto"/>
                                        <ColumnDefinition/>
                                    </Grid.ColumnDefinitions>
                                    <Rectangle x:Name="FrozenColumnScrollBarSpacer"/>
                                    <ScrollBar x:Name="HorizontalScrollbar" Grid.Column="1" Height="18" Margin="-1,0,-1,-1" Orientation="Horizontal"/>
                                </Grid>
                                <sdk:ValidationSummary x:Name="ValidationSummary" Grid.ColumnSpan="3" MaxHeight="90" Grid.Row="3"/>
                            </Grid>
                        </Border>
                        <Border x:Name="DisabledVisualElement" Background="#8CFFFFFF" CornerRadius="2" HorizontalAlignment="Stretch" Height="Auto" IsHitTestVisible="False" Opacity="0" VerticalAlignment="Stretch" Width="Auto"/>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</UserControl.Resources>


<Grid x:Name="LayoutRoot" Background="White">

    <sdk:DataGrid x:Name="McDataGrid" HorizontalAlignment="Left" Height="500" VerticalAlignment="Top" Width="400" Style="{StaticResource DataGridStyle1}"/>

</Grid>

C#

  public MainPage()
    {
        InitializeComponent();

        Data();
        McDataGrid.ItemsSource = list;

    }

    public List<Model> list = new List<Model>();
    private List<Model> Data()
    {
        list.Add(new Model(1, "Test", "1", true));
        list.Add(new Model(2, "Ger", "2", true));
        list.Add(new Model(3, "dsg", "3", true));
        list.Add(new Model(4, "Hd", "4", false));
        list.Add(new Model(5, "TeHRFdgst", "5", false));
        return list;
    }

    public class Model : INotifyPropertyChanged
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Prop { get; set; }
        public bool enabled { get; set; }

        public event PropertyChangedEventHandler PropertyChanged;

        public Model(int id, string name, string prop, bool isenabled)
        {
            Id = id;
            Name = name;
            Prop = prop;
            enabled = isenabled;

        }

        protected virtual void OnPropertyChanged(string propertyName)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

但到目前为止,它只按预期为 IsEnabled 添加了一个列,但我认为它也会设置属性值。

如果有可能的话,有人可以解释 XAML 和 C# 之间的绑定是如何工作的吗?

毫米8

您可以使用 aRowStyle禁用一行:

<Style x:Key="DataGridStyle1" TargetType="sdk:DataGrid">
    <Setter Property="RowStyle">
        <Setter.Value>
            <Style TargetType="sdk:DataGridRow">
                <Setter Property="IsEnabled" Value="{Binding enabled}"/>
            </Style>
        </Setter.Value>
...
    </Setter>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Silverlight绑定到父DataTemplate

来自分类Dev

Silverlight绑定到父DataTemplate

来自分类Dev

如何将Silverlight与XNA集成

来自分类Dev

Silverlight,DataTemplate,绑定到单击事件

来自分类Dev

无法在Silverlight中将集合绑定到ComboBox

来自分类Dev

从AngularJS到Silverlight获取数据

来自分类Dev

从AngularJS到Silverlight获取数据

来自分类Dev

在Silverlight中将Dictionary的值绑定到元素的工具提示

来自分类Dev

将动态数据绑定到Silverlight Datagrid C#

来自分类Dev

将动态数据绑定到Silverlight Datagrid C#

来自分类Dev

如何将主页方法传递给Childwindow Silverlight?

来自分类Dev

Silverlight元素绑定不起作用

来自分类Dev

MVVM Silverlight DataGrid:绑定列集合

来自分类Dev

如何将Windows Phone 8.1 Silverlight应用发布到Windows Phone商店?

来自分类Dev

如何将连接字符串名称从 Silverlight 应用程序传递到 DomainService

来自分类Dev

在WSP中将Silverlight Xaps部署到ClientBin

来自分类Dev

如何在Silverlight RichTextBox中添加表格?

来自分类Dev

如何在Silverlight中弹出PopUp控件

来自分类Dev

如何使Silverlight页面等待几秒钟

来自分类Dev

如何通过ID获取Silverlight TreeViewItem?

来自分类Dev

如何在Silverlight中创建List <T>?

来自分类Dev

Silverlight组合框selectedValue字符串属性绑定

来自分类Dev

组合框未在Silverlight Xaml中显示绑定值

来自分类Dev

silverlight-更改属性值已更改

来自分类Dev

如何在Silver Maps的Silverlight插件中放置Silverlight饼图作为图钉

来自分类Dev

如何在Silverlight中将子元素的宽度绑定到父元素的宽度

来自分类Dev

我们如何将xamarin形式的通用视图模型中的列表项“网格宽度”绑定到“属性”?

来自分类Dev

如何将List <string>转换为IEnumerable <ServiceReference.datatable> C#Silverlight WCF RIA服务LINQ到SQL

来自分类Dev

Silverlight绑定使用stringformat显示0的空白

Related 相关文章

  1. 1

    Silverlight绑定到父DataTemplate

  2. 2

    Silverlight绑定到父DataTemplate

  3. 3

    如何将Silverlight与XNA集成

  4. 4

    Silverlight,DataTemplate,绑定到单击事件

  5. 5

    无法在Silverlight中将集合绑定到ComboBox

  6. 6

    从AngularJS到Silverlight获取数据

  7. 7

    从AngularJS到Silverlight获取数据

  8. 8

    在Silverlight中将Dictionary的值绑定到元素的工具提示

  9. 9

    将动态数据绑定到Silverlight Datagrid C#

  10. 10

    将动态数据绑定到Silverlight Datagrid C#

  11. 11

    如何将主页方法传递给Childwindow Silverlight?

  12. 12

    Silverlight元素绑定不起作用

  13. 13

    MVVM Silverlight DataGrid:绑定列集合

  14. 14

    如何将Windows Phone 8.1 Silverlight应用发布到Windows Phone商店?

  15. 15

    如何将连接字符串名称从 Silverlight 应用程序传递到 DomainService

  16. 16

    在WSP中将Silverlight Xaps部署到ClientBin

  17. 17

    如何在Silverlight RichTextBox中添加表格?

  18. 18

    如何在Silverlight中弹出PopUp控件

  19. 19

    如何使Silverlight页面等待几秒钟

  20. 20

    如何通过ID获取Silverlight TreeViewItem?

  21. 21

    如何在Silverlight中创建List <T>?

  22. 22

    Silverlight组合框selectedValue字符串属性绑定

  23. 23

    组合框未在Silverlight Xaml中显示绑定值

  24. 24

    silverlight-更改属性值已更改

  25. 25

    如何在Silver Maps的Silverlight插件中放置Silverlight饼图作为图钉

  26. 26

    如何在Silverlight中将子元素的宽度绑定到父元素的宽度

  27. 27

    我们如何将xamarin形式的通用视图模型中的列表项“网格宽度”绑定到“属性”?

  28. 28

    如何将List <string>转换为IEnumerable <ServiceReference.datatable> C#Silverlight WCF RIA服务LINQ到SQL

  29. 29

    Silverlight绑定使用stringformat显示0的空白

热门标签

归档