Как работает реагирующий проект без компиляции кода src?

В правильном подходе MVVM у вас будет модель представления с абстрактным представлением списка прямоугольников, например. например:

public class RectItem
{
    public double X { get; set; }
    public double Y { get; set; }
    public double Width { get; set; }
    public double Height { get; set; }
}

public class ViewModel
{
    public ObservableCollection<RectItem> RectItems { get; set; }
}

Тогда у вас будет представление, которое использует ItemsControl для визуализации коллекции таких Rect элементов. Элемент ItemsControl имел бы Canvas как его ItemsPanel и соответствующие ItemContainerStyle и ItemTemplate, каждый из которых привязывается к соответствующим свойствам модели представления. Это может выглядеть так:

<ItemsControl ItemsSource="{Binding RectItems}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Canvas/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemContainerStyle>
        <Style TargetType="ContentPresenter">
            <Setter Property="Canvas.Left" Value="{Binding X}"/>
            <Setter Property="Canvas.Top" Value="{Binding Y}"/>
        </Style>
    </ItemsControl.ItemContainerStyle>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Rectangle Width="{Binding Width}" Height="{Binding Height}" Fill="Black"/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

Альтернатива без привязок в установках стиля (которая не работает в UWP) может выглядеть так:

<ItemsControl ItemsSource="{Binding RectItems}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Canvas/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Rectangle Width="{Binding Width}" Height="{Binding Height}" Fill="Black">
                <Rectangle.RenderTransform>
                    <TranslateTransform X="{Binding X}" Y="{Binding Y}"/>
                </Rectangle.RenderTransform>
            </Rectangle>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
-4
задан Bayan.M.R 16 January 2019 в 19:08
поделиться

1 ответ

Это зависит от того, как ваш код написан и структурирован. Некоторые языки требуют компиляции, например typescript. Использование ключевых слов, таких как import, по-прежнему не поддерживается большинством браузеров и узлов, поэтому также требуется компиляция. По сути, компиляция не требуется, если вы пишете на языке, понятном вашему браузеру или узлу (в зависимости от того, что вы используете).

Но имейте в виду: это ОЧЕНЬ ПЛОХАЯ ПРАКТИКА . Компиляция позволяет писать код, который хорошо структурирован, читабелен и использует новейшие функции EcmaScript. Это также позволяет разделять код, минимизировать код, связывать и многое другое, что было очень приятно несколько лет назад и теперь является стандартом в производственном коде. Более того, никто этого не делает, поэтому, если вы напишите свой код так, чтобы никто не использовал его, вы вряд ли найдете справку по отладке на таких форумах, как этот. И последнее, компиляция стала очень простой благодаря таким инструментам, как Webpack.

Попробуйте сборник!

0
ответ дан Nino Filiu 16 January 2019 в 19:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: