Другой вариант - использовать привязку. Если у вас есть объект, с которым вы используете привязку, чтобы получить текст каждого TreeViewItem
(например), вы можете создать стиль, который также связывает свойство IsSelected
:
<TreeView>
<TreeView.Resources>
<Style TargetType="TreeViewItem">
<Setter Property="IsSelected"
Value="{Binding Path=IsSelected, Mode=TwoWay}" />
</Style>
</TreeView.Resources>
</TreeView>
Это предполагает, что связанный объект имеет свойство IsSelected
типа bool
. Затем вы можете выбрать TreeViewItem
, установив IsSelected
на true
для своего соответствующего объекта.
Тот же подход может использоваться с свойством IsExpanded
для управления при расширении TreeViewItem
или рухнул.
Из того, что вы написали, я предполагаю, что MyResources - это интерфейс, расширяющий ClientBundle, а MyCssResources - интерфейс, расширяющий CssResource:
interface MyResources extends ClientBundle {
@Source("myImage.png")
@ImageOptions(repeatStyle = RepeatStyle.BOTH)
ImageResource myImage();
@Source("myCss.css")
MyCssResource myCss();
}
interface MyCssResource extends CssResource {
String myBackground();
}
Итак, теперь есть два способа использования ImageResource, полученный от MyResources. Во-первых, присоедините его к правилу CSS с помощью директивы @sprite. myCss.css:
@sprite .myBackground {
gwt-image: "myImage";
/* Additional CSS rules may be added. */
}
Тогда все, что связано с классом myBackground, будет иметь myImage в качестве фона. Так, используя UiBinder, например:
<ui:UiBinder> <!-- Preamble omitted for this example. -->
<ui:with field="myResources" type="com.mycompany.MyResources"/>
<g:FlowPanel styleName="{myResources.myCss.myBackground}"/>
</ui:UiBinder>
Можно также создавать экземпляры объектов Image напрямую, используя определенный ImageResource. UiBinder:
<ui:UiBinder> <!-- Preamble omitted for this example. -->
<ui:with field="myResources" type="com.mycompany.MyResources"/>
<g:Image resource="{myResources.myImage}"/>
</ui:UiBinder>
Без UiBinder:
MyResources myResources = GWT.create(MyResources.class);
Image myImage = new Image(myResources.myImage());
Я хотел бы добавить также
Не забудьте вызвать sureInjected () для MyCssResource.java или еще
<g:FlowPanel styleName="{myResources.myCss.myBackground}"/>
не будет работать.
Если вы используете gss, @sprite
в этом случае не работает. Вы должны использовать gwt-sprite
как:
.myBackground {
gwt-sprite: "myImage";
}
Просто позвольте мне добавить это:
@sprite .myBackground {
gwt-image: "myImage";
/* Additional CSS rules may be added. */
}
становится
.myBackground {
backgroud-image: url(-url of the image-)
width: *width of the image*
height: *height of the image*
}
Не забудьте переопределить их, если вам это нужно: например, установить высоту и ширину в авто:
@sprite .myBackground {
gwt-image: "myImage";
height: auto;
width: auto;
}
HTH, я изо всех сил пытался выяснить это;)