Указание значения времени разработки атрибута базы данных WPF в XAML - PullRequest
0 голосов
/ 14 августа 2010

Я играю с 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», в которых ничего нет. Кто-нибудь может объяснить это также?

1 Ответ

0 голосов
/ 15 августа 2010

Один из способов - заставить ваш конструктор ViewModel установить нужные значения, а затем связать его с ним во время разработки:

<Window.Resources>
  <ResourceDictionary>
    <app:MyViewModel x:Key="ViewModel" />
  </ResourceDictionary>
</Window.Resources>

, а затем связать:

<Grid
  DataContext="{StaticResource ViewModel}">
</Grid>

Этоне совсем удовлетворительное решение, но хорошо при написании кода.

...