none
ListView上にあるCheckBoxの配列をひとつチェックすると上下左右にあるセルの属性が変わるようにするには RRS feed

  • 質問

  •  


    ListViewで配置したCheckBoxのたとえば{(B)行Rm1列}のCheckBoxのチェックを付けると
    {(B)行Rm2列}のCheckBoxがUnableになったり、{(A)行Rm1列}のLabelのBackground="Red"
    になったりしたいのですが、もともとは50行10列ぐらいの大きさがあります。
    できるだけEventHandlerを使わずにXAML内部で処理したいのですが、ご教授お願いします。

    using System;
    using System.Windows;
    using System.Collections.ObjectModel;

    namespace EyeW{

        public partial class Window1 : Window
        {
      public Window1() {
       InitializeComponent();
      }
     }

        public class DataPr{
            private String _Tx;
            private bool _rmN01;
            private bool _rmN02;
            private bool _rmN03;

            public String Tx{
                get { return _Tx; }
                set { _Tx = value; }
            }
            public bool RmN01{
                get { return _rmN01; }
                set { _rmN01 = value; }
            }
            public bool RmN02{
                get { return _rmN02; }
                set { _rmN02 = value; }
            }
            public bool RmN03{
                get { return _rmN03; }
                set { _rmN03 = value; }
            }

            public DataPr(
                String tx, bool rmn01, bool rmn02, bool rmn03){
                _Tx = tx;
                _rmN01 = rmn01;
                _rmN02 = rmn02;
                _rmN03 = rmn03;
            }
        }
        public class myDataPr : ObservableCollection<DataPr>{
            public myDataPr(){
                Add(new DataPr("(A)", true, true, false));
                Add(new DataPr("(B)", true, true, true));
                Add(new DataPr("(C)", true, true, true));
                Add(new DataPr("(D)", true, true, true));
            }
        }
    }

    /******* ファイル Windows.xaml *******/
    <Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        x:Class="EyeW.Window1"
        xmlns:local="clr-namespace:EyeW">
       <Window.Resources>
         <ObjectDataProvider x:Key="DataPrSource"
           ObjectType="{x:Type local:myDataPr}"/>
     
        <Style x:Key ="Label_W" TargetType="{x:Type Label}">
          <Setter Property="Width" Value="40"/>
          <Setter Property="Height" Value="20"/>
          <Setter Property="Margin" Value="-20,0,0,0"/>
          <Setter Property="Background" Value="Blue"/>
          <Setter Property="Opacity" Value="0.1"/>
        </Style>
        <Style x:Key ="TextCT" TargetType="{x:Type TextBlock}">
          <Setter Property="Text" Value="{Binding  Path=Tx}"/>
        </Style>
        <Style x:Key ="CheckBoxRoom1" TargetType="{x:Type CheckBox}">
          <Setter Property="IsEnabled" Value="{Binding  Path=RmN01}"/>
        </Style>
        <Style x:Key ="CheckBoxRoom2" TargetType="{x:Type CheckBox}">
          <Setter Property="IsEnabled" Value="{Binding  Path=RmN02}"/>
        </Style>
        <Style x:Key ="CheckBoxRoom3" TargetType="{x:Type CheckBox}">
          <Setter Property="IsEnabled" Value="{Binding  Path=RmN03}"/>
        </Style>

         <DataTemplate x:Key="CT">
           <TextBlock  Style="{StaticResource  TextCT}">
           </TextBlock>
         </DataTemplate>
         <DataTemplate x:Key="CT_Room1">
           <CheckBox  Style="{StaticResource  CheckBoxRoom1}">
             <Label Style="{StaticResource Label_W}">
             </Label>
           </CheckBox>
         </DataTemplate>
         <DataTemplate x:Key="CT_Room2">
           <CheckBox  Style="{StaticResource  CheckBoxRoom2}">
             <Label Style="{StaticResource Label_W}">
             </Label>
           </CheckBox>
         </DataTemplate>
         <DataTemplate x:Key="CT_Room3">
           <CheckBox  Style="{StaticResource  CheckBoxRoom3}">
             <Label Style="{StaticResource Label_W}">
             </Label>
           </CheckBox>
         </DataTemplate>

       </Window.Resources>
      <DockPanel Height="150">
        <ListView Height="120"
          ItemsSource="{Binding Source={StaticResource DataPrSource}}">
          <ListView.View>
            <GridView>
              <GridViewColumn Header ="Title" Width="40" CellTemplate="{StaticResource CT}"/>
              <GridViewColumn Header ="Rm1" Width="40" CellTemplate="{StaticResource CT_Room1}"/>
              <GridViewColumn Header ="Rm2" Width="40" CellTemplate="{StaticResource CT_Room2}"/>
              <GridViewColumn Header ="Rm3" Width="40" CellTemplate="{StaticResource CT_Room3}"/>
            </GridView>
          </ListView.View>
        </ListView>
      </DockPanel>
    </Window>

     

    2007年9月22日 6:04

すべての返信