Bis Dato hab ich die Objekt-Daten in der Gridview autark per Items.Add() in die Gridview eingetragen (sourcecode ~Zeilen 268+). Nun wird es Zeit, das Eine (List<Object>) an das Andere (Listview mit Gridview) zu binden, weil ich weitere Dinge wie zB Entfernen oder Markieren zum Konvertieren in der Listview zulassen will. Langer Rede kurzer Sinn: Mir will das Binden nur so halb gelingen.
Das Object sieht so aus (verkürzt, hier komplett):
Wie Ihr seht, Objekt mit Objekten drin, in eine Liste gefüllt. Ich nutze im Hauptcode eine List<raw>, die ich als Observable<raw> angelegt habe. OneWay funktionierts soweit, aber
(1) Probleme macht mir ein boolean (data.filedata.convertIt), dass ich als Checkbox zeigen möchte und natürlich auch TwoWay im Object ändern.
(2) Abgesehen von anderen booleans, die nur OneWay sind, aber optimalerweise nicht als string dargestellt werden sollen, sondern als SpecialChars (Kreuz und Check), das klingt nach nem Template.
Die XAML sieht momentan so aus (verkürzt):
Das also der "obere" Teil. Hier die Listview.
Ich bin Durcheinander 
Databinding in XAML, ItemsSource oder DataContext?
Wie packe ich die booleans in die reflektierte Checkbox? (convertIt)
Wie ändere ich boolean true/false in andere Chars (isMLV als RAW oder MLV)?
Hier noch Exzerpte aus dem MainCode:
Nun, ich stecke einfach fest, weil ich das Konzept des Bindings scheinbar noch nicht kapiert hab. Danke für all die Hilfe, die da kommen mag
mfg chmee
Das Object sieht so aus (verkürzt, hier komplett):
Code:
public class rawList : ObservableCollection<raw>
{
}
public class raw
{
public data data { get; set; }
public List<Blocks.rawBlock> RAWBlocks { get; set; }
public List<Blocks.mlvBlock> VIDFBlocks { get; set; }
public List<Blocks.mlvBlock> AUDFBlocks { get; set; }
}
public class data
{
public metadata metaData { get; set; }
public audiodata audioData { get; set; }
public filedata fileData { get; set; }
}
public class metadata
{
public string fpsString { get; set; }
public int whiteBalance { get; set; }
public bool isMLV { get; set; }
}
public class audiodata
{
public bool hasAudio { get; set; }
public int audioSamplingRate { get; set; }
public int audioChannels { get; set; }
}
public class filedata
{
public bool convertIt { get; set; }
public string fileNameOnly { get; set; }
}
(1) Probleme macht mir ein boolean (data.filedata.convertIt), dass ich als Checkbox zeigen möchte und natürlich auch TwoWay im Object ändern.
(2) Abgesehen von anderen booleans, die nur OneWay sind, aber optimalerweise nicht als string dargestellt werden sollen, sondern als SpecialChars (Kreuz und Check), das klingt nach nem Template.
Die XAML sieht momentan so aus (verkürzt):
Code:
<Window x:Class="raw2cdng_v2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:raw2cdng_v2"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
Title="raw2cdng"
ResizeMode="NoResize"
WindowStyle="None"
mc:Ignorable="d"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Height="556" Width="917"
MaxWidth="920" MaxHeight="556" SizeToContent="WidthAndHeight"
BorderBrush="#FFC8C8C8"
HorizontalAlignment="Left" VerticalAlignment="Top"
BorderThickness="1"
MouseLeftButtonDown="Window_MouseLeftButtonDown"
Icon="/raw2cdng_v2;component/appicon.ico">
<Window.Resources>
<ObjectDataProvider x:Key="rawFilesList" ObjectType="{x:Type local:rawList}" />
<Style x:Key="chmeeListview" TargetType="{x:Type ListViewItem}">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="White" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="White" />
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="Black" />
</Style.Resources>
<Setter Property="Focusable" Value="False" />
</Style>
</Window.Resources>
Code:
<Grid Width="894" HorizontalAlignment="Left" VerticalAlignment="Top" Height="515">
<ListView ItemsSource="{Binding}" Height="400" HorizontalAlignment="Left" Margin="8,71,0,0" Name="_batchList" VerticalAlignment="Top" Width="550" Drop="batchList_Drop" AllowDrop="True" PreviewMouseLeftButtonUp="batchList_Click" SelectionMode="Extended" IsTextSearchEnabled="False" HorizontalContentAlignment="Center" DataContext="Resource_of_rawFiles">
<ListView.View>
<GridView>
<GridViewColumn Header="do" Width="22">
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox Margin="-4,0,-4,0" IsChecked="{Binding Path=data.filedata.convertIt,Mode=TwoWay}" Checked="convert_Checked" Unchecked="convert_Unchecked" DataContext="{Binding data.filedata.convertIt}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="type" Width="36" DisplayMemberBinding="{Binding Path=data.metaData.isMLV}" />
<GridViewColumn Header="filename" Width="120" DisplayMemberBinding="{Binding Path=data.fileData.fileNameOnly}"/>
<GridViewColumn Header="fps" Width="50" DisplayMemberBinding="{Binding Path=data.metaData.fpsString}"/>
<GridViewColumn Header="audio" Width="36" DisplayMemberBinding="{Binding Path=data.metaData.hasAudio}"/>
</GridView>
</ListView.View>
</ListView>
</Grid>

Databinding in XAML, ItemsSource oder DataContext?
Wie packe ich die booleans in die reflektierte Checkbox? (convertIt)
Wie ändere ich boolean true/false in andere Chars (isMLV als RAW oder MLV)?
Hier noch Exzerpte aus dem MainCode:
Code:
public rawList rawFiles = new rawList();
// daten auslesen, Object füllen
// und dann aus nem Subthread in die Liste packen
this.Dispatcher.Invoke((Action)(() =>
{
rawFiles.Add(importRaw);
}));
Nun, ich stecke einfach fest, weil ich das Konzept des Bindings scheinbar noch nicht kapiert hab. Danke für all die Hilfe, die da kommen mag

mfg chmee
Zuletzt bearbeitet: