小编Gáb*_*kás的帖子

如何在WPF项目中将rdlc文件添加到ReportViewer

我通过主窗口的设计者ReportViewerWPF应用程序中添加了一个XAML,我想添加一个现有的rdlc文件.

我希望我的reportviewer在启动时显示一个空的rdlc文件(没有参数),稍后从我的datagrid中选择一行(绑定到observablecollection)相应地更改其参数并显示填充的报告定义而不是空的报告定义.

我将创建一个按钮,将所选行作为命令参数和相关事件以及所有内容,我只需要能够将数据传递给报表.我意识到这不是一个简单的问题所以我会尝试简化:

  1. 如何将现有的rdlc文件添加到ReportViewer(MVVM,WPF)?
  2. 我按下一个按钮 - >相关命令从我的observablecollection获取项目作为参数(我的数据网格中的一行) - >如何将此项目的数据部分传递给报告的未填充(或覆盖,如果填写)部分?

我希望我已经清楚了.谢谢你提前回答!

c# wpf reportviewer rdlc mvvm

9
推荐指数
1
解决办法
1万
查看次数

按钮命令绑定在Xamarin.Forms中不起作用

我想将命令绑定到我的按钮的命令属性.这似乎非常简单,因为我之前在WPF中已经多次这样做了,这里的方法非常相似.让我展示一些代码片段.

XAML

<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
         x:Class="MyApp.View.CustomPage"
         Title="Something">

<ContentPage.Content>
    <StackLayout>
        <Button x:Name="numBtn" Text="Increase number" Command="{Binding IncreaseCommand}" />
        <Label x:Name="numLabel" Text="{Binding numberText}" />
    </StackLayout>
</ContentPage.Content>
</ContentPage>
Run Code Online (Sandbox Code Playgroud)

代码隐藏

public partial class CustomPage : ContentPage
{   
    public CustomPage ()
    {
        InitializeComponent ();
        BindingContext = ViewModelLocator.ViewModel();  //ViewModelLocator is singleton, gives
                                                        //you a ViewModel instance
    }
}
Run Code Online (Sandbox Code Playgroud)

视图模型

public ICommand IncreaseCommand { get; private set; }
private int number;
public string numberText { get; private set;}
Run Code Online (Sandbox Code Playgroud)

构造函数:

public ViewModel()
{
    IncreaseCommand = new …
Run Code Online (Sandbox Code Playgroud)

c# xaml binding mvvm xamarin.forms

9
推荐指数
2
解决办法
1万
查看次数

如何在Xamarin.Forms中创建类似于Facebook应用程序的标签页

我正在使用Xamarin.Forms,我想创建一个类似于Facebook应用程序的导航方法,以及其他不同应用程序的更新版本.这是两张图片,一张是Android上的Facebook应用程序,另一张是KakaoTalk,也是在Android上.

Android上的Facebook应用

Android上的KakaoTalk应用程序

我已经尝试了几种不同的方法来实现它.例如,我将MainPage(TabbedPage)包装在NavigationPage中.我还尝试在NavigationPage中包装MainPage(ContentPage)然后调用

PushAsync(new TabbedPage());
Run Code Online (Sandbox Code Playgroud)

通过该Navigation属性在MainPage内.我还尝试将MainPage(TabbedPage)的子项包装在单独的NavigationPage中.这些尝试都没有产生预期的效果.

我希望以下情况发生.当用户点击按钮或导航到另一个页面的东西时,我希望ContentPage弹出所有内容(包括标签栏),导航栏(或操作栏)除外.显然,这通过该PushAsync()方法发生,该方法还导致导航栏中出现小的后退箭头.我的理解是,PushAsync()调用将所选页面推送到NavigationPage提供的导航堆栈.因此,如果TabbedPage被包装在NavigationPage中,则新的ContentPage将无法像在上面提到的两个应用程序中一样弹出选项卡.

这个以及所述应用程序的标签栏没有进入横向模式的ActionBar(在Android中)这一事实让我相信我想要实现的最好不要使用TabbedPage,而是像标签栏,例如也许是水平的按钮堆栈.

有没有人使用Xamarin.Forms以正确的方式正确实现这一点?所以再一次,我想让这个标签像导航一样,标签停留在横向模式下的ActionBar下面,当推到导航堆栈上时,新标签出现在标签前面(隐藏它们).你认为这可以用Custom Renderer来完成吗?当然在iOS中这些都是使用标签完成的,但在Android中我不确定.

我想要的不一定是代码示例,而是这个问题的最佳实践.再次,这是在Xamarin.Forms与一个常见的PCL项目和一个Android和iOS项目.提前感谢您的答案和建议!

PS:我之前很明显搜索过这个网站(谷歌也是如此),但我没有找到关于这个问题的真实文章.

c# tabbar navigationbar xamarin.forms

5
推荐指数
1
解决办法
1万
查看次数

如何在 Xamarin.Forms 中将多个页面的 BindingContext 设置为同一个 ViewModel?

我是 Xamarin.Forms 的新手,我想使用 MVVM 模式和 XAML 创建一个跨平台应用程序。在我的形式项目(PCL),我想设置的BindingContext我的的MainPage在未来的多个页面,并以同样的视图模型。这可能吗?让我展示一下我在说什么。下面是我早期WPF项目 ( App.xaml.cs )的代码片段:

public partial class App : Application
{
    private MainWindow _MainWindow;
    private MyViewModel _ViewModel;

    public App()
    {
        _ViewModel = new MyViewModel();

        _ViewModel.SomeEvent += new System.EventHandler(ViewModel_SomeEvent);
    }
}



protected override void OnStartup(StartupEventArgs e)
{
    base.OnStartup(e);
    _MainWindow = new MainWindow();
    _MainWindow.DataContext = _ViewModel;
    _MainWindow.Show();         
}

private void ViewModel_SomeEvent(object sender, EventArgs e)
{
     //Do something
}
Run Code Online (Sandbox Code Playgroud)

ViewModel 的内容并不重要。使用这个结构,我能够设置与多个窗口_ViewModelDataContext相同的对象。Xamarin.Forms 中是否有与此等效的内容?

这是我的 pcl 项目(App.cs)中的一个简单代码: …

c# xaml binding mvvm xamarin.forms

4
推荐指数
1
解决办法
8259
查看次数

标签 统计

c# ×4

mvvm ×3

xamarin.forms ×3

binding ×2

xaml ×2

navigationbar ×1

rdlc ×1

reportviewer ×1

tabbar ×1

wpf ×1