Autor Beitrag
Christoph1972
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Fr 22.02.13 22:45 
Hallo zusammen,

ich möchte in einem DataGrid den Cell Style auf VerticalAlignment & HorizontalAlignment auf center festlegen. Dazu hat mir goole diese Lösung geliefert: Click

Das Beispiel funktioniert bei mir jedoch nur wenn ich den Style als DynamicResource aufrufe, ansonsten bekomme ich eine XMLParseException.

Könnte mir bitte jemand erklären warum das so ist? Was haben die Jungs in dem Beispiel andersgemacht als ich?

ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
<Window x:Class="WpfDataGridTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="416" Width="651">
    <Grid>
        <DataGrid Name="MyDataGrid"  CellStyle="{DynamicResource Body_Content_DataGrid_Centering}" RowHeight="30" ColumnWidth="60" AutoGenerateColumns="False" HorizontalAlignment="Stretch" Margin="0" VerticalAlignment="Stretch"  >
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding TestCol1}" Header="TestCol1" ></DataGridTextColumn>
                <DataGridTextColumn Binding="{Binding TestCol2}" Header="TestCol2" ></DataGridTextColumn>
                <DataGridTextColumn Binding="{Binding TestCol3}" Header="TestCol3" ></DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>
        <Grid.Resources>
            <Style x:Key="Body_Content_DataGrid_Centering" TargetType="{x:Type DataGridCell}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type DataGridCell}">
                            <Grid Background="LightBlue">
                                <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" />
                            </Grid>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Grid.Resources>
    </Grid>
    <Window.Resources>       
    </Window.Resources>
</Window>


Moderiert von user profile iconChristian S.: Code- durch XML-Tags ersetzt

_________________
Gruß
Christoph
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 23.02.13 12:17 
Sie haben die Resource vor den Verweis gesetzt :zwinker: ?

Zitat:
A StaticResource must not attempt to make a forward reference to a resource that is defined lexically further within the XAML file. Attempting to do so is not supported, and even if such a reference does not fail, attempting the forward reference will incur a load time performance penalty when the internal hash tables representing a ResourceDictionary are searched. For best results, adjust the composition of your resource dictionaries such that forward references can be avoided. If you cannot avoid a forward reference, use DynamicResource Markup Extension instead.

_________________
>λ=
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: So 24.02.13 10:59 
Hallo Sebastian!

user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Sie haben die Resource vor den Verweis gesetzt :zwinker: ?


Könntest du mir bitte zeigen wie du das meinst? Ich kann das nicht nachstellen, ich bekomme es als StaticResource nicht zum laufen. Über Goole habe ich jeweils nur Infos, wie die von dir angehängte gefunden. Gut, das ist die Theorie dazu, nur wie sieht das praktisch aus? Mir erschließt sich nicht, wie ich das im XAML umsetzten muss. Ich denke da habe ich eine Lücke bei den Grundlagen.....

_________________
Gruß
Christoph
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 24.02.13 13:01 
Ohne etwas XAML-Fähiges zur Hand zu haben: Du solltest nur den DataGrid- und den Grid.Resources-Knoten vertauschen müssen.

_________________
>λ=
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: So 24.02.13 13:49 
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Ohne etwas XAML-Fähiges zur Hand zu haben: Du solltest nur den DataGrid- und den Grid.Resources-Knoten vertauschen müssen.


Öhm, wie :gruebel: Könntest du da genau erklären was du tauschen würdest? Wenn ich es wörtlich nehme, ist der Code nicht mehr lauffähig.........

_________________
Gruß
Christoph
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 24.02.13 17:36 
Also wenn das nicht läuft:
ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
<Window x:Class="WpfDataGridTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="416" Width="651">
    <Grid>
        <Grid.Resources>
            <Style x:Key="Body_Content_DataGrid_Centering" TargetType="{x:Type DataGridCell}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type DataGridCell}">
                            <Grid Background="LightBlue">
                                <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" />
                            </Grid>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Grid.Resources>
        <DataGrid Name="MyDataGrid"  CellStyle="{StaticResource Body_Content_DataGrid_Centering}" RowHeight="30" ColumnWidth="60" AutoGenerateColumns="False" HorizontalAlignment="Stretch" Margin="0" VerticalAlignment="Stretch"  >
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding TestCol1}" Header="TestCol1" ></DataGridTextColumn>
                <DataGridTextColumn Binding="{Binding TestCol2}" Header="TestCol2" ></DataGridTextColumn>
                <DataGridTextColumn Binding="{Binding TestCol3}" Header="TestCol3" ></DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
    <Window.Resources>       
    </Window.Resources>
</Window>


...dann weiß ich auch nicht mehr weiter :) .

_________________
>λ=
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: So 24.02.13 18:35 
Super danke! Diese Konstellation hatte ich nicht probiert, ich habe definitiv nicht verstanden wie du das mit dem tauschen meintest. Mir war nicht klar das sich die Reihenfolge im XAML auswirkt, ich dachte bis gerade sie ist egal :oops: Wieder was gelernt!

Nochmals vielen Dank!

_________________
Gruß
Christoph
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 25.02.13 13:08 
user profile iconChristoph1972 hat folgendes geschrieben Zum zitierten Posting springen:
ich habe definitiv nicht verstanden wie du das mit dem tauschen meintest.
Nur um die Begrifflichkeiten noch schnell klarzustellen: XML ist eine Baumstruktur, ein Baum hat eine Wurzel, Knoten, Blätter etc. ;)

_________________
>λ=