Я не вижу ОК, ну, я вижу его, но он чистый, он не нулевой, потому что он показывает пустые объекты ОК (правильное количество записей в БД)
Но это происходит только при использовании причины uc, если я использую простую привязку данных без uc, я могу видеть все записи. Я уже сделал точку останова, чтобы увидеть, если по какой-то причине данные, переданные со свойством зависимости, были нулевыми, но в объекте есть вся информация, просто он не может передать данные в uc xaml.
Alredy пробовал без uc и все работает
UC XAML
<Grid>
<StackPanel>
<Button x:Name="elementoButton">
<Image x:Name="elementoImage" Width="64" Height="64"/>
</Button>
<TextBlock x:Name="ipTextBlock" HorizontalAlignment="Center"/>
<TextBlock x:Name="nomeTextBlock" HorizontalAlignment="Center"/>
</StackPanel>
</Grid>
UC C #
public Classes.Elementi elementi
{
get { return (Classes.Elementi)GetValue(elementiProperty); }
set { SetValue(elementiProperty, value); }
}
// Using a DependencyProperty as the backing store for elementi. This enables animation, styling, binding, etc...
public static readonly DependencyProperty elementiProperty =
DependencyProperty.Register("elementi", typeof(Classes.Elementi), typeof(ElementoControl), new PropertyMetadata(new Classes.Elementi { IndirizzoIP = "0.0.0.0", Nome = "Undefined", Image = "/Control Panel 2.0;component/img/default.png" }, SetElemento));
private static void SetElemento(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
ElementoControl elementoControl = new ElementoControl();
if (elementoControl != null)
{
elementoControl.ipTextBlock.Text = (e.NewValue as Classes.Elementi).IndirizzoIP;
elementoControl.nomeTextBlock.Text = (e.NewValue as Classes.Elementi).Nome;
#region SetImage
if ((e.NewValue as Classes.Elementi).Categoria == "Uruk")
{
elementoControl.elementoImage.Source = new BitmapImage(new Uri((e.NewValue as Classes.Elementi).Image, UriKind.Relative));
}
else if ((e.NewValue as Classes.Elementi).Categoria == "Server")
{
elementoControl.elementoImage.Source = new BitmapImage(new Uri((e.NewValue as Classes.Elementi).Image, UriKind.Relative));
}
else if ((e.NewValue as Classes.Elementi).Categoria == "Router")
{
elementoControl.elementoImage.Source = new BitmapImage(new Uri((e.NewValue as Classes.Elementi).Image, UriKind.Relative));
}
else if ((e.NewValue as Classes.Elementi).Categoria == "Pannelli Solari")
{
elementoControl.elementoImage.Source = new BitmapImage(new Uri((e.NewValue as Classes.Elementi).Image, UriKind.Relative));
}
else if ((e.NewValue as Classes.Elementi).Categoria == "EasyCapture")
{
elementoControl.elementoImage.Source = new BitmapImage(new Uri((e.NewValue as Classes.Elementi).Image, UriKind.Relative));
}
else if ((e.NewValue as Classes.Elementi).Categoria == "Computer")
{
elementoControl.elementoImage.Source = new BitmapImage(new Uri((e.NewValue as Classes.Elementi).Image, UriKind.Relative));
}
else if ((e.NewValue as Classes.Elementi).Categoria == "Internet")
{
elementoControl.elementoImage.Source = new BitmapImage(new Uri((e.NewValue as Classes.Elementi).Image, UriKind.Relative));
}
else if ((e.NewValue as Classes.Elementi).Categoria == "Stampante")
{
elementoControl.elementoImage.Source = new BitmapImage(new Uri((e.NewValue as Classes.Elementi).Image, UriKind.Relative));
}
else if ((e.NewValue as Classes.Elementi).Categoria == "UPS")
{
elementoControl.elementoImage.Source = new BitmapImage(new Uri((e.NewValue as Classes.Elementi).Image, UriKind.Relative));
}
#endregion
#region IsPingable
if (IsPingable((e.NewValue as Classes.Elementi).IndirizzoIP))
{
elementoControl.elementoButton.Background = new SolidColorBrush(Colors.DarkGreen);
}
else
{
elementoControl.elementoButton.Background = new SolidColorBrush(Colors.DarkRed);
}
#endregion
}
else
MessageBox.Show("usercontrol nullo");
}
MainWindow XAML
<StackPanel>
<ListView x:Name="elementiListView" Background="DodgerBlue">
<ListView.ItemTemplate>
<DataTemplate>
<uc:ElementoControl elementi="{Binding}"/>
<!--<StackPanel>
<Button x:Name="elementoButton">
<Image x:Name="imageButton" Source="{Binding Image}" Width="64" Height="64"></Image>
</Button>
<TextBlock Text="{Binding Nome}" HorizontalAlignment="Center"/>
<TextBlock Text="{Binding IndirizzoIP}" HorizontalAlignment="Center"/>
</StackPanel>-->
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackPanel>
MainWindow C #
private void ReadDatabase()
{
List<Classes.Elementi> elementi = new List<Classes.Elementi>();
using (SQLiteConnection connection = new SQLiteConnection(App.ElementiDB()))
{
connection.CreateTable<Classes.Elementi>();
elementi = connection.Table<Classes.Elementi>().ToList();
}
if (elementi != null)
{
elementiListView.ItemsSource = elementi;
}
}
В MainWindow XAML вы можете видеть, что я пробовал без uc, и без него он работает отлично, но мне нужно использовать uc, я ожидаю, что либо используя uc, я вижу то же самое, что без него