Как добавить ресурс в качестве привязки в сетку данных? - PullRequest
2 голосов
/ 27 декабря 2011

Это часть моего кода:

<ribbon:RibbonWindow x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:ribbon="clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary"
    x:Name="RibbonWindow"
Width="850" Height="600">

    <Window.Resources>
        <ResourceDictionary>
            <sys:Int32 x:Key="Timestep">0</sys:Int32>

            <CollectionViewSource x:Key="cvsNodes" />
        </ResourceDictionary>
    </Window.Resources>

    ...

    <DataGrid x:Name="NodeDataGrid" Grid.Row="1" AutoGenerateColumns="False" AlternatingRowBackground="Linen" IsReadOnly="True" ItemsSource="{Binding Source={StaticResource cvsNodes}}">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Node" Binding="{Binding Path=ID}" SortDirection="Ascending" />
            <DataGridTextColumn Header="X" Binding="{Binding Path=Position.X, StringFormat=\{0:F\}}" />
            <DataGridTextColumn Header="Y" Binding="{Binding Path=Position.Y, StringFormat=\{0:F\}}" />
            <DataGridTextColumn Header="Z" Binding="{Binding Path=Position.Z, StringFormat=\{0:F\}}" />
            <DataGridTextColumn Header="Pressure (s)" Binding="{Binding Path=Results[{DynamicResource Timestep}].PressureSupply, StringFormat=\{0:F\}}" />
        </DataGrid.Columns>
    </DataGrid>

    ...
</ribbon:RibbonWindow>

Все работает, кроме этой строки:

<DataGridTextColumn Header="Pressure (s)" Binding="{Binding Path=Results[{DynamicResource Timestep}].PressureSupply, StringFormat=\{0:F\}}" />

Однако это работает (я заменил {DynamicResource Timestep} на 0):

<DataGridTextColumn Header="Pressure (s)" Binding="{Binding Path=Results[0].PressureSupply, StringFormat=\{0:F\}}" />

Как мне этого добиться?

1 Ответ

1 голос
/ 27 декабря 2011

Насколько мне известно, индексаторы должны быть константами времени компиляции, поэтому нет способа сделать то, что вы пытаетесь. Обходной путь будет зависеть от ваших точных требований, но у вас может быть свойство с хорошо известным именем, которое отображает правильный результат на основе текущего временного шага.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...