0
votes
    <Border Grid.Row="0"  Height="auto" x:Name="BorderEcs" Background="#9494a5"   BorderThickness="1,0,1,1" BorderBrush="#9494a5"  CornerRadius="10,10,0,0">
        <StackPanel Height="auto">
            <Label x:Name="LblTitl" Content="" Margin="5,0,0,0" Height="auto"  Foreground="#FFFFFF" FontFamily="Century Gothic" FontSize="13" />
            <DataGrid  Width="{Binding ControlWidth, RelativeSource={RelativeSource Self},Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" 
                       Height="{Binding ControlHeight, RelativeSource={RelativeSource Self},Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"           
                           CellStyle="{StaticResource DataGridContentCellCentering}"
                           RowStyle="{StaticResource RowStyle}" 
                           ColumnHeaderStyle="{StaticResource ColumnHeaderStyle}" 
                           Style="{StaticResource DataGridStyle}"  
                           AlternatingRowBackground="White" 
                           AlternationCount="2">
            </DataGrid>
        </StackPanel>

{ public partial class UCDataGrid : UserControl,INotifyPropertyChanged { public UCDataGrid() { InitializeComponent(); DataContext = this; } public static DependencyProperty ControlHeightProperty = DependencyProperty.Register("ControlHeight", typeof(int), typeof(UCDataGrid));

    public static  DependencyProperty ControlWidthProperty =
        DependencyProperty.Register("ControlWidth", typeof(int), typeof(UCDataGrid));

    public event PropertyChangedEventHandler PropertyChanged;

    public int ControlHeight
    {
        get { return (int)GetValue(ControlHeightProperty); }
        set { SetValue(ControlHeightProperty, value);
            OnProperyChanged("ControlHeight");
        }
    }

    public int ControlWidth
    {
        get { return (int)GetValue(ControlWidthProperty); }
        set { SetValue(ControlWidthProperty, value); OnProperyChanged("ControlWidth"); }
    }
    public void OnProperyChanged(string propName = null)
    {
        PropertyChangedEventHandler propertyChanged = PropertyChanged;
        if (propertyChanged != null)
        {
            propertyChanged(this, new PropertyChangedEventArgs(propName));
        }
    }
}

}

    <us:UCDataGrid x:Name="d" ControlWidth="1" ControlHeight="10" />
1
What error are you getting? Can you please share the code of UCDataGrid?]Jayakrishnan
<DataGrid Width="{Binding ControlWidth, RelativeSource={RelativeSource Self},Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Height="{Binding ControlHeight, RelativeSource={RelativeSource Self},Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource DataGridStyle}" AlternatingRowBackground="White" > </DataGrid>hamza Ben laama
@JayakrishnanGounder can u help mehamza Ben laama

1 Answers

1
votes

Please try below code, It worked for me. For simplicity, I have just included code for ControlWidth

public partial class UCDataGrid : UserControl
{
    public UCDataGrid()
    {
        InitializeComponent();
    }

    public static  DependencyProperty ControlWidthProperty =
    DependencyProperty.Register("ControlWidth", typeof(double), typeof(UCDataGrid),new UIPropertyMetadata());

    public double ControlWidth
    {
       get { return (double)GetValue(ControlWidthProperty); }
       set { SetValue(ControlWidthProperty, value);  }
    }
}

Now set Name to your UserControl in xaml and access it to set the binding. For the time being remove all the styles and check to make sure the width and height are not being set at any other place.

<UserControl Name="root">
 <Border Grid.Row="0"  Height="auto" x:Name="BorderEcs" Background="#9494a5"   BorderThickness="1,0,1,1" BorderBrush="#9494a5"  CornerRadius="10,10,0,0">
    <StackPanel Height="auto">
        <Label x:Name="LblTitl" Content="" Margin="5,0,0,0" Height="auto"  Foreground="#FFFFFF" FontFamily="Century Gothic" FontSize="13" />
        <DataGrid  Width="{Binding ElementName=root, Path=ControlWidth, UpdateSourceTrigger=PropertyChanged}" 
                   Height="{Binding ElementName=root, Path=ControlHeight, UpdateSourceTrigger=PropertyChanged}"           
                       CellStyle="{StaticResource DataGridContentCellCentering}"
                       RowStyle="{StaticResource RowStyle}" 
                       ColumnHeaderStyle="{StaticResource ColumnHeaderStyle}" 
                       Style="{StaticResource DataGridStyle}"  
                       AlternatingRowBackground="White" 
                       AlternationCount="2">
        </DataGrid>
    </StackPanel>
    </UserControl>

Hope it helps