Определение столбцов шаблона DataGrid во время выполнения в Silverlight 4.0 - PullRequest
0 голосов
/ 17 февраля 2012

Используя метод, описанный здесь Я пытаюсь динамически строить столбцы DataTemplate.У меня проблема с определением моего собственного конвертера. Первая проблема связана с определением пространства имен моей собственной программы, потому что я получаю эту ошибку:

Тип 'RowIndexConverter' не найден, поскольку 'clr-namespace: LANOS.Models;сборка = LANOS 'не найдена.

В соответствии с решением, на котором я основывал свое приложение, для любого определенного пользователем пространства имен также требуется имя сборки.RowIndexConverter принадлежит LANOS.Models точно, опечаток нет.Класс принадлежит к основной сборке приложения (другими словами, он не является внешним).Так почему же тогда возникает проблема?

Вторая проблема заключается в том, что я не уверен, что мое определение преобразователя правильно с использованием этой техники.Я хочу получить эквивалент этого UserControl.Resources:

<navigation:Page xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit"  x:Class="LANOS.Views.SRFEditor" 
           xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
           xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
           xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
           xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
           xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
           xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
           xmlns:model="clr-namespace:LANOS.Models"
           mc:Ignorable="d"
           d:DesignWidth="640" d:DesignHeight="480"
           Title="SRFEditotr Page">

<UserControl.Resources>
    <model:RowIndexConverter x:Key="rowIndexConverter"/>

    <DataTemplate x:Key="myCellTemplate">
        <TextBlock Text='{Binding Data, Mode=TwoWay, Converter={StaticResource rowIndexConverter}}' />
    </DataTemplate>
</UserControl.Resources>

Код функции.

    private string GenerateTextColumnXAML(string sortMemberKey)
    {
        StringBuilder CellTemp = new StringBuilder();
        CellTemp.Append("<DataTemplate ");
        CellTemp.Append("xmlns='http://schemas.microsoft.com/winfx/");
        CellTemp.Append("2006/xaml/presentation' ");
        CellTemp.Append("xmlns:model='clr-namespace:LANOS.Models; assembly=LANOS' ");
        CellTemp.Append("xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' ");
        CellTemp.Append("xmlns:basics='clr-namespace:System.Windows.Controls;");
        CellTemp.Append("assembly=System.Windows.Controls' >");

        CellTemp.Append("<Grid>");
        CellTemp.Append("<Grid.Resources>");
        CellTemp.Append("<model:RowIndexConverter x:Key='rowIndexConverter' />");
        CellTemp.Append("</Grid.Resources>");

        CellTemp.Append("<TextBlock Text='{Binding Data, Mode=TwoWay, Converter={StaticResource rowIndexConverter}, ConverterParameter=" + sortMemberKey + "}' />");
        CellTemp.Append("</Grid>");
        CellTemp.Append("</DataTemplate>");
        return CellTemp.ToString();
    }

Результат функции:

<DataTemplate
xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' 
xmlns:model='clr-namespace:LANOS.Models; assembly=LANOS' 
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' 
xmlns:basics='clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls' >
<Grid>
<Grid.Resources><model:RowIndexConverter x:Key='rowIndexConverter' />
</Grid.Resources><TextBlock Text='{Binding Data, Mode=TwoWay, Converter={StaticResource rowIndexConverter}, ConverterParameter=GRID_ROW_ID}' />
</Grid>
</DataTemplate>

1 Ответ

1 голос
/ 19 февраля 2012

Я считаю, что проблема в этой строке

    CellTemp.Append("xmlns:model='clr-namespace:LANOS.Models; assembly=LANOS' ");

Попробуйте удалить пробел до assembly, т. Е .:

    CellTemp.Append("xmlns:model='clr-namespace:LANOS.Models;assembly=LANOS' ");

(Да, я действительно прошу вас сделать что-то столь же тривиальное, как удаление одного пробела! Я удивлен, что это имеет значение. Я смог воспроизвести ошибку с пробелом, но она работала без.)

Что касается вашего второго вопроса, я не вижу проблемы с использованием конвертера, как вы. Я сделал то же самое раньше.

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