Laden...

Forenbeiträge von MarioR Ingesamt 3 Beiträge

25.03.2011 - 14:21 Uhr

im XAML einen Loaded-Event setzen:


        <ListBox Grid.Row="0"  Grid.Column="0" Grid.RowSpan="9" Grid.ColumnSpan="2" HorizontalAlignment="Stretch" Margin="2" Name="lbMessSchichten" VerticalAlignment="Stretch" MouseDoubleClick="lbMessSchichten_MouseDoubleClick" ItemsSource="{Binding MessSchichten}" >
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Value}" Name="itemTextBlock" Loaded= "setItemHeight" />
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>


und im Code das Event erzeugen:


        void setItemHeight(object sender, RoutedEventArgs e)      {
            if ((sender == null) || (rowDefinitionHeight == null)) return;
            if (!(sender is TextBlock)) return;
            (sender as TextBlock).Height = rowDefinitionHeight.ActualHeight;        
        }
16.03.2011 - 04:15 Uhr

... Basics sind ja auch wichtig ...

nur hierbei hab ich ein Problem

bei:


    <Grid Name="grdPgOpentMessSchight">
...
        <Grid.RowDefinitions>
            <RowDefinition Name="rowDefinitionHeight"/>
...
         </Grid.RowDefinitions>
...
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding  Path=ActualHeight, ElementName=grdPgOpentMessSchight}" />                   
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>

Zeit er mir 514,... an.

bei


    <Grid Name="grdPgOpentMessSchight">
...
        <Grid.RowDefinitions>
            <RowDefinition Name="rowDefinitionHeight"/>
...
         </Grid.RowDefinitions>
...
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding  Path=ActualHeight, ElementName=rowDefinitionHeight}" />                   
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>

zeigt er mir 0 an.

Im XAML sind vom grdPgOpentMessSchight die ActualHeight und auch RowDefinitions.Count vorhanden.
Nun dachte ich mir, ... Mache ich mir doch einen Converter:

    public class GridActualHeightConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            double ergebnis = 0.0;
            if (value != null)
            {
                if (value is Grid)
                {
                    Grid grid = (Grid)value;
                    ergebnis = grid.ActualHeight / grid.RowDefinitions.Count;
                }
            }
            return ergebnis;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

und binde doch diesen ein, da ja s.oben beim Grid die ActualHeight vorhanden ist:


                <DataTemplate>
                    <TextBlock Text="{Binding   
                         Converter={StaticResource gridConverter},                         
                         ElementName=grdPgOpentMessSchight}">
                    </TextBlock>
                </DataTemplate>

... ja denkste ... im Converter ist die grid.ActualHeight = 0.0

ja und nun ???

15.03.2011 - 23:25 Uhr

Hallo,

ich hab ein Usercontrol mit einer Listbox in einem Grid.
Nun möchte ich, dass sich die "ItemHeigt" der Listbox nach der
aktuellen RowHeight des Grid richtet.
Das sollte doch bestimmt über Binding möglich sein, oder?


<UserControl x:Class="Usercontrols.PageOpenMessSchicht"    
       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="287" d:DesignWidth="230" Name="pgOpenMessSchicht" FontSize="12">
    <Grid Name="grdPgOpentMessSchight">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="86*" />
            <ColumnDefinition Width="144*" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition >>>>{Hier an die ActualHeight}<<<</>
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
        <Button Content="OK" Grid.Row="9" Grid.Column="1" HorizontalAlignment="Stretch" Margin="2" Name="btnOK" VerticalAlignment="Stretch" Click="btnOK_Click" />
        <Button Content="ABBR" Grid.Row="9" Grid.Column="0" HorizontalAlignment="Stretch" Margin="2" Name="btnCancel" VerticalAlignment="Stretch" Click="btnCancel_Click" />
        <ListBox Grid.Row="0"  Grid.Column="0" Grid.RowSpan="9" Grid.ColumnSpan="2" HorizontalAlignment="Stretch" Margin="2" Name="lbMessSchichten" VerticalAlignment="Stretch" MouseDoubleClick="lbMessSchichten_MouseDoubleClick" ItemsSource="{Binding MessSchichten}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Value}" Height="{Binding >>>???<<<}"/>
                </DataTemplate>
            </ListBox.ItemTemplate>    
         </ListBox>
    </Grid>
</UserControl>

lg Mario