Я играю с Canvas внутри Viewbox, и, к сожалению, единственный способ увидеть элементы в Canvas, я должен назначить ему высоту и ширину. Однако проблема в том, что мои значения высоты и ширины поступают из моей модели представления через привязку данных.
Я знаю, что Blend справляется с этим с помощью пространства имен дизайнера d:
, которое установлено на xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
. Я хотел бы использовать нечто подобное для VS2008, чтобы в конструкторе я мог указать эти значения и посмотреть, с чем я работаю.
Другим вариантом является жесткое кодирование значений на данный момент, а затем переключение туда-сюда при необходимости, но я бы предпочел оптимальное решение, если это возможно. Любая информация будет высоко ценится!
ОБНОВЛЕНИЕ - странно, другая проблема в том, что kaxaml и VS2008 рендерит по-разному. Если я использую следующий XAML в kaxaml:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Page.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Margin" Value="3" />
<Setter Property="Width" Value="50" />
</Style>
</Page.Resources>
<DockPanel>
<StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal" Height="Auto" HorizontalAlignment="Right">
<Button>Cancel</Button>
<Button>OK</Button>
</StackPanel>
<Grid DockPanel.Dock="Top">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Viewbox Grid.Row="0">
<Canvas Width="600" Height="50">
<TextBox>test</TextBox>
</Canvas>
</Viewbox>
<Viewbox Grid.Row="1">
<!-- <Canvas Width="{Binding WorkspaceWidth}" Height="{Binding WorkspaceHeight}" > -->
<Canvas Width="640" Height="480" >
<TextBox>test</TextBox>
<TextBox Canvas.Left="150" Canvas.Top="50">test</TextBox>
</Canvas>
</Viewbox>
</Grid>
</DockPanel>
</Page>
рендерится как положено. Но если я скопирую DockPanel в свой проект VS2008, я просто получу элементы «Viewbox», в которых ничего нет. Кто-нибудь может объяснить это также?