Как добавить ColorPicker в ячейку Datagrid - MVVM Light - PullRequest
0 голосов
/ 20 октября 2018

Как добавить ColorPicker в ячейку в сетке данных?

Я занимаюсь сохранением объектов JSON в текстовом файле с помощью Newtonsoft, а затем их отображением в сетке данных, сохранением и загрузкойобъекты работают нормально, но это не совсем то, что я хочу.Моя проблема в том, что я хотел бы иметь возможность сохранять шестнадцатеричные числа, а затем иметь возможность загружать их и отображать их в виде цветов в ColorPicker.Как я сейчас понял, он использует строки для сохранения шестнадцатеричного числа и при загрузке их загружает их в виде простого текста, а это не то, что я ищу.

Итак, главный вопрос здесь, как я могудобавить ColorPicker в ячейку в сетке данных и отобразить цвет?

Вот что у меня есть ...

enter image description here

XAML

    <Window x:Class="Tool.Views.WiresView"
            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:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
            xmlns:ignore="http://www.galasoft.ch/ignore"
            mc:Ignorable="d ignore"
            Title="Wires" Height="715" Width="790"
            DataContext="{Binding WiresDialogBox, Source={StaticResource Locator}}">

        <Grid>
            <DataGrid x:Name="dataGrid"
                      ItemsSource="{Binding WiresObservableCollection}"
                      AutoGenerateColumns="False">

                <DataGrid.Columns >
                    <DataGridTextColumn Header="Length" Binding="{Binding WireLength}"></DataGridTextColumn>
                    <DataGridTextColumn Header="Color" Binding="{Binding WireColor}"></DataGridTextColumn>
                    <DataGridTextColumn Header="Description" Binding="{Binding WireDescription}"></DataGridTextColumn>
                </DataGrid.Columns>
            </DataGrid>
        </Grid>
    </Window>

МОДЕЛЬ

public class Wire
{
    public string WireLength { get; set; }
    public string WireColor { get; set; }
    public string WireDescription { get; set; }
}

К вашему сведению - я использую MVVM Light, Newtonsoft для анализа объектов JSON иtoolkit для ColorPicker.

1 Ответ

0 голосов
/ 26 октября 2018

Я использовал DataGridTemplateColumn, как предложено ASh.

Вот как я это сделал.

            <DataGrid.Columns >
                <DataGridTextColumn Header="Length" Binding="{Binding WireLength}"></DataGridTextColumn>

               <DataGridTemplateColumn Header="Color" SortMemberPath="WireColor">
                  <DataGridTemplateColumn.CellTemplate>
                      <DataTemplate>
                           <Label  Background="{Binding Path=WireColor, Mode=TwoWay}"/>
                      </DataTemplate>
                  </DataGridTemplateColumn.CellTemplate>
               </DataGridTemplateColumn>

                <DataGridTextColumn Header="Description" Binding="{Binding WireDescription}"></DataGridTextColumn>
            </DataGrid.Columns>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...