2013-09-02 3 views
0

Я хочу, чтобы мои gridsplitters в пользовательском элементе управления отображали видимость на основе того, когда родительский элемент управления загрузил некоторые данные с помощью кнопки загрузки? Я думал, что способ сделать это - создать свойство dataloaded на родительском элементе управления, а затем установить триггер в триггерах пользовательского управления, как показано ниже:Как сделать gridsplitters видимым при нажатии кнопки загрузки?

, но я не могу заставить его ссылаться на свойство пользовательского контроля (graphviewer).

Кроме того, могут ли триггеры свойств ссылаться на другие элементы управления внутри элемента управления, как я сделал ниже? Я предполагаю, что мой синтаксис неверен или что я пытаюсь сделать, не представляется возможным. До сих пор я только перепутал несколько базовых свойств в шаблонах триггеров при внесении изменений в управляющие шаблоны, поэтому я не знаю, возможно ли то, что я пытаюсь сделать.

<UserControl.Triggers> 
    <Trigger Property="GraphViewer.DataLoaded" Value="true"> 
     <Setter Property="SignalNameGridSplitter.Visibility" Value="Visible" /> 
    </Trigger> 
    </UserControl.Triggers> 

ответ

1

Попробуйте это ... сначала добавить XML-пространство имен вашего GraphViewer контроля - что-то вроде этого:

xmlns:YourXmlNamespace="clr-namespace:YourApplicationName.FolderNameIfApplicable" 

Затем добавьте это в Style ... он должен быть в Style.Triggers коллекции потому что вы не можете использовать DataTrigger в коллекции UserControl.Triggers:

<UserControl.Style> 
    <Style> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding DataLoaded, RelativeSource={RelativeSource 
FindAncestor, AncestorType={x:Type YourXmlNamespace:GraphViewer}}}" Value="True"> 
       <Setter Property="SignalNameGridSplitter.Visibility" Value="Visible" /> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</UserControl.Style> 
Смежные вопросы