2013-02-27 4 views
1

Я динамически загружая XAML файл в моей программе, которая имеет привязку:Проверка привязки данных Exists

<ListView 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Grid.Row="2" BorderBrush="White" Name="ListView1" 
    ItemsSource="{Binding Path=line}" HorizontalAlignment="Stretch"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="Lines" 
      DisplayMemberBinding="{Binding Path=aline}" /> 
     </GridView> 
    </ListView.View> 
</ListView > 

В моей программе, я хочу, чтобы проверить, если Binding существует.

Как это должно быть достигнуто?

Edit:aline является свойством объекта DataContext

+0

Могу ли я спросить, почему вы хотите, чтобы проверить это? Или какую «проблему» вы пытаетесь решить? Возможно, лучший способ. – user7116

+0

Мне в основном нужен загруженный xaml, чтобы всегда иметь привязку, если нет, тогда мне нужно добавить привязку. В конце концов, я не буду знать содержимое загружаемого xaml. – David

ответ

-3
if (ListView1.ItemsSource != null) 
      Console.WriteLine("Is Bound"); 
     else Console.WriteLine("Is Not bound"); 
+0

Это будет проверять, не имеет ли значение ItemSource, если это значение является привязкой. Я могу назначить '' 123 '' ItemsSource, и он отобразит 3 элемента, но это не привязка. – LPL

+0

Я бы согласился, но приведенный выше код показывает ItemsSource = "{Binding Path = line}". Так что, если «строка» не существует в datacontext, тогда нет привязки. –

+0

@justinarsine: это не так. Рассмотрим случай, когда 'DataContext' изменяется на объект с свойством' lines'. Затем привязка будет работать. Зачем? Потому что привязка всегда была там. – user7116

8

Вы можете проверить привязок, как это:

BindingExpression be = BindingOperations.GetBindingExpression(ListView1, ItemsSourceProperty); 
return be != null ? "ItemsSource is bound" : "ItemsSource is not bound"; 
+0

Я никогда раньше не видел такого заявления о возврате. Я считаю, что я не понимаю какой-то синтаксис, не могли бы вы вкратце объяснить, что это будет в действительности возвращать (логическое, строка)? – David

+0

Это только пример. Здесь он вернет строку для демонстрации, но, конечно, вы можете настроить ее для своих нужд. – LPL

+0

См. Http://msdn.microsoft.com/en-us/library/vstudio/ty67wk28.aspx для подробных подробностей синтаксиса. – LPL

Смежные вопросы